0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全硬件TCP/IP协议栈学习笔记(第一天:TCP/IP协议学习一)

学FPGA,慢慢来 2017-12-18 10:22 次阅读

一.为什么会有TCP/IP协议

首先呢,TCP/IP不是一个协议,而是一个协议族的统称。他们的存在是为了在将电脑联合起来的时候,利用他们可以和其他的计算机终端做自由的交流。

二.TCP/IP协议分层

1.TCP/IP族按照层次由上到下,层层包装。每一层都有自己的功能,每一层都有下一层的支持。而用户接触的,只是最上边一层,没有感觉到下面一层层,但是理解的时候要从最下层由下向上来理解。最上边是应用层,这里有http,ftp等熟悉的协议。而第二层就是传输层,TCP和UDP协议就是在这个层次。第三层是网络层,IP协议就在这里,他负责对数据加上IP地址和其他数据以确定传输的目标。第四层叫做数据链路层,这个层次为待传输的数据加上一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。再往下就是硬件层次,负责网络的传输,这个层次的定义包括网线的格式,网卡的定义等等。

2.发送协议的主机从上到下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。这种结构非常像栈,所以我们也把TCP/IP协议族称为TCP/IP栈。

3.每一层都是为了完成一种功能,为了实现这些功能,需要大家每个人都要遵循共同的规则,而这个规则就叫做“协议”。互联网的每一层都定义了许多协议。而这些协议的总称,就叫做“互联网协议”,他们是互联网的核心。

三.基本常识

1.互联网地址(IP地址):网络上的每一个节点都必须有一个独立的Internet地址,也叫IP地址。通常使用的IP地址是一个32bit的数字,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。需注意,IP地址是网络号+主机号的组合,这十分重要。

2.域名系统:域名系统就是一个分布的数据库,它提供将主机名(就是网址)转换成IP地址的服务。

3.RFC:TCP/IP协议的标准文档。他一共有4000多个协议的定义。

4.端口号:这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口。平时所说的把某某的端口封掉,也只是在IP层次把带有这个号码的IP包滤掉了而已。

5.应用编程接口(API):现常用的编程接口有socket和TLI。主要是提供应用程序和开发人员以访问一组例程功能,而无需考虑其底层的源代码是为何,或理解其内部工作机制的细节。

四.实体层

就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

五.数据链路层

单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号为有何意义?

这就是“连接层”的功能,他在“实体层”的上方,确定了0和1的分组方式。

数据链路层有三个目的:

1.为IP模块发送和接收IP数据报。

2.为ARP模块发送ARP请求和接收ARP应答。

3.为RARP发送RARP请求和接收RARP应答。

注:ARP:地址解析协议,是用IP地址换MAC地址(媒体访问地址,或称为物理地址,硬件地址。MAC地址是网卡决定的,是固定的,共48位,实际上就是适配器地址,IP地址就如同一个职位,而MAC地址则好像是去应聘这个职位的人才,职位既可以让甲坐,也可以让乙坐,同样的道理一个结点的IP地址对于网卡是不做要求,基本上什么样的厂家都可以用,也就是说IP地址与MAC地址并不存在着绑定关系。)的一种协议,而RARP则叫做逆地址解析协议。

以太网的定义是指数字设备公司( Digital Equipment Corp.)、英特尔公司(Intel Corp.)和Xerox公司在1982年联合公布的一个标准。以太网规定,一组电信号构成一个数据包,叫做“帧”,每一帧分成两个部分:标头(head)和数据(data)。

标头包含了数据包的一些说明项,比如发送者,接受者,数据类型等;“数据”包括了数据包的具体内容。标头的长度固定为18字节。数据的长度最长为1500字节,最短为46字节。因此,整个“帧”最长为1518字节,最短为64字节。如果数据很长,就必须分割成多个帧进行发送。

以太网规定,连入网络的所有设备,都必须具有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这就是MAC地址。

定义地址只是第一步,在这之后要解决一块网卡如何知道另一块网卡的MAC地址?回答是一种ARP协议。而在以太网数据包必须知道接收方的MAC地址,然后才能发送。

之后就算有了MAC地址,系统如何才能把数据包准确的发送到接收方?,而以太网采用用了一种很原始的方式,即向本网络内的所有计算机发送,让每台计算机自己判断,是否为接收方。他们读取这个包的“标头”,找到接收方的MAC地址,然后与自身的MAC地址进行比较,如果两者相同,就接受这个包,作进一步处理,否则就丢弃这个包,这种发送方式就叫做广播。

有了数据包的定义,网卡的MAC地址,广播的发送方式,“连接层”就可以在多台计算机之间传输数据。

六.网络层

1.由来:以太网协议,依靠MAC地址发送数据。但是,以太网采用广播来发送数据包,效率低,而且局限在发送者所在的子网络。因此,要找到一种方法,能够区分那些MAC地质属于同一个子网络,那些不是。如果是同一个子网络,就采用广播,否则采用路由(...)方式发送,而这是MAC地址无法实现的,他至于厂商有关,与所处网络无关,这就导致了“网络层”的诞生,他的作用就是引用一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。而这套地址就叫做“网络地址”,简称“网址”。于是,“网络层”出现之后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,他们是随机组合在一起的。

网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据报送到该子网络中的目标网卡,因此,先处理网络地址,在处理MAC地址。

2.IP协议

规定网络地址的协议,叫做IP协议。他所规定的地址,就被称为IP地址。我们采用的一般是IPv4.这个版本规定,网络地址由32个二进制位组成。习惯上分为四段,如255.255.255.255,这个地址分成两部分,前一部分代表网络,后一部分代表主机。但是单从IP地址,我们无法分辨网络部分。因此,我们需要一个参数来判断两台计算机是否属于同一个子网络,这个参数就是“子网掩码”,它在形式上等同于IP地址,也是一个32位的二进制数,他的网络部分全部为1,主机部分为0.知道子网掩码我们就可以判断两个IP地址是否属于同一个自网络下,方法就是将两个IP地址与子网掩码分别进行AND运算。,比较结果是否相同,如果是的话,就表明在同一个子网络中。

所以,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定那些地址在同一个子网络。

3.IP数据包

根据IP协议发送的数据,就叫做IP数据包。其中包含IP地址信息。但是由于以太网数据包只包含MAC地址,并没有IP地址栏,但我们也并不需要为他添加一个栏位,我们将IP数据包直接放进以太网数据包的“数据”中,而不用修改以太网的规格,这就是互联网分层的好处:上层的变动完全不涉及下层的结构。IP数据也分为“标头”和“数据”两部分,"标头"主要是版本,长度,IP地址,“数据”部分则是IP数据包的具体内容。他放在以太网数据包后,就是这样

IP数据包的“标头”部分的长度为20到60字节,整个数据包的总长度最大为65535字节,因此,一个IP数据包的“数据”部分最长为65515字节。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1630

    文章

    21796

    浏览量

    605577
  • 嵌入式
    +关注

    关注

    5091

    文章

    19176

    浏览量

    307259
收藏 人收藏

    相关推荐

    什么是socket编程 socket与tcp/ip协议的关系

    基于TCP/IP协议族,这是组用于网络通信的协议,包括传输控制协议
    的头像 发表于 11-01 16:01 467次阅读

    芯驿电子 ALINX 推出全新 IP 核产品线,覆盖 TCP/UDP/NVMe AXI IP

    10GBe/40GBe UDP 协议 IP 核、10GbE TCP/IP 协议
    的头像 发表于 10-30 17:39 377次阅读
     芯驿电子 ALINX 推出全新 <b class='flag-5'>IP</b> 核产品线,覆盖 <b class='flag-5'>TCP</b>/UDP/NVMe AXI <b class='flag-5'>IP</b> 核

    Modbus RTU协议与Modbus TCP/IP协议的区别

    Modbus RTU和Modbus TCP/IP的本质都是Modbus协议,都是通过Modbus寄存器地址来交换数据的,那么它们之间有什么区别呢?今天我们从以下几个方面来探讨下。
    的头像 发表于 10-18 17:44 766次阅读

    TCP协议是什么

    在网络通信的广阔领域中,TCP(Transmission Control Protocol,传输控制协议)扮演着举足轻重的角色。作为TCP/IP协议
    的头像 发表于 10-09 13:54 824次阅读

    EtherNet/IP转Modbus-TCP协议转换网关

    在工业自动化领域中,EtherNet/IP转Modbus-TCP这两种网络协议的互通互联非常重要。有款优秀的设备——远创智控YC-EIP-TCP
    的头像 发表于 09-06 16:54 294次阅读
    EtherNet/<b class='flag-5'>IP</b>转Modbus-<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>转换网关

    EtherNet/IP转Modbus-TCP协议网关(EtherNet/IP转Modbus-TCP

    ,设备主要功能 捷米特JM-EIP-TCP型网关实现EtherNet/IP网络与Modbus TCP网络之间的数据通讯,可支持Modbus TCP
    的头像 发表于 09-04 11:09 476次阅读
    EtherNet/<b class='flag-5'>IP</b>转Modbus-<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>网关(EtherNet/<b class='flag-5'>IP</b>转Modbus-<b class='flag-5'>TCP</b>)

    串口服务器和TCP/IP协议是什么关系

    串口服务器与TCP/IP协议之间存在着紧密而复杂的关系。这种关系主要体现在串口服务器如何利用TCP/I
    的头像 发表于 08-25 17:35 1667次阅读

    文了解TCP/IP协议

    TCP/IP协议是现代计算机网络通信的基础,是互联网及局域网广泛使用的协议TCP/
    的头像 发表于 08-07 15:38 2347次阅读
    <b class='flag-5'>一</b>文了解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>

    华纳云:TCP IP协议的发展和优势

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是互联网和现代计算机网络的基础
    的头像 发表于 07-25 16:49 546次阅读

    TCP IP协议属性设置中的IP配置

    的分配、子网掩码的设置、网关和DNS的配置等方面,旨在为网络工程师和IT专业人士提供科学、学术且专业的指导。 1. TCP/IP协议概述 TCP/I
    的头像 发表于 07-23 10:10 593次阅读

    TCP/IP协议的设计与实现_中文

    电子发烧友网站提供《TCP/IP协议的设计与实现_中文.pdf》资料免费下载
    发表于 07-03 11:28 4次下载

    LwIP协议源码详解—TCP/IP协议的实现

    电子发烧友网站提供《LwIP协议源码详解—TCP/IP协议的实现.pdf》资料免费下载
    发表于 07-03 11:22 3次下载

    从表象到本质:深入探究TCP/IP协议

    在信息技术飞速发展的今天,网络已成为人类社会不可或缺的部分。实现网络中计算机相互通信的关键之便是TCP/IP协议。作为互联网的基础,TCP
    的头像 发表于 06-15 09:12 574次阅读
    从表象到本质:深入探究<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>

    Microchip TCP/IP 协议应用笔记

    电子发烧友网站提供《Microchip TCP/IP 协议应用笔记.pdf》资料免费下载
    发表于 04-17 14:16 3次下载

    TCP/IP协议数据的处理流程

    TCP/IP协议的设计目标是提供种通用、灵活且可扩展的协议体系,使得不同种类的设备和系统能够互相通信,实现互联网的互联互通。
    发表于 02-03 16:30 1653次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>数据的处理流程