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
    +关注

    关注

    1592

    文章

    21207

    浏览量

    592135
  • 嵌入式
    +关注

    关注

    4962

    文章

    18145

    浏览量

    286498
收藏 人收藏

    评论

    相关推荐

    tcp/ip协议包含哪几层?tcp和udp有什么区别?

    tcp/ip协议包含哪几层?tcp和udp有什么区别? TCP/IP
    的头像 发表于 11-29 17:40 488次阅读

    TCP/IP 协议通信接口的实现

    电子发烧友网站提供《TCP/IP 协议通信接口的实现.pdf》资料免费下载
    发表于 10-26 09:21 1次下载
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b> <b class='flag-5'>协议</b>通信接口的实现

    TCP/IP协议和OPC协议的区别

    随着计算机网络技术的飞速发展,网络通信已经成为现代工业自动化控制系统中不可或缺的一部分。在众多的网络通信协议中,传输控制协议TCP)和网际协议I
    的头像 发表于 10-20 17:34 1429次阅读

    TCP/IP协议是什么?TCP/IP参考模型的结构是怎样的?

    TCP/IP协议组在OSI模型之前流行。最初的TCP/IP有四层,显然与OSI模型的层不匹配。当OSI模型被引入时,人们相信它将在商业上压倒
    的头像 发表于 08-11 15:26 1336次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>是什么?<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>参考模型的结构是怎样的?

    TCP/IP协议不止是两个协议

    TCP/IP(TransmissionControlProtocol/InternetProtocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的
    的头像 发表于 07-31 23:07 736次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>不止是两个<b class='flag-5'>协议</b>

    TCP/IP协议进阶课程:5、UDP协议

    电子发烧友网站提供《TCP/IP协议进阶课程:5、UDP协议.pdf》资料免费下载
    发表于 07-31 11:48 0次下载
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>进阶课程:5、UDP<b class='flag-5'>协议</b>

    TCP/IP协议进阶课程:6、TCP协议

    电子发烧友网站提供《TCP/IP协议进阶课程:6、TCP协议.pdf》资料免费下载
    发表于 07-31 11:47 1次下载
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>进阶课程:6、<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>

    初级课程-tcp ip协议

    电子发烧友网站提供《初级课程-tcp ip协议.pdf》资料免费下载
    发表于 07-31 11:04 0次下载
    初级课程-<b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>协议</b>

    TCP/IP协议模型的五层处理流程简介

    TCP/IP是一种分层模型,它将通信协议分解为五个层次,每个层次都有特定的功能和任务。以下是TCP/IP五层的处理流程:
    的头像 发表于 07-21 16:31 982次阅读

    TCP/IP协议包括哪些协议 一文详解TCP/IP协议

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的
    发表于 07-21 09:56 6132次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>包括哪些<b class='flag-5'>协议</b> 一文详解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>

    TCPIP协议详解

    此文档详细讲述了TCP-IP协议内容,有想了解的可以看看,丰富自己的知识。
    发表于 07-13 14:25 2次下载

    网络通信OSI协议TCP/IP协议

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的
    发表于 05-06 17:06 1675次阅读

    TCP/IP协议的特点

    可靠性和性能: TCP/IP协议的传输层TCP协议,提供了高可靠的数据传输服务,保证数据的完整性和顺序性,并且具有流量控制和拥塞控制等机制。
    发表于 05-06 15:15 7069次阅读

    TCP/IP协议的组成

    TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议
    发表于 05-06 15:05 1663次阅读

    什么是TCP/IP协议

    TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/网际互联协议,又名网络通讯
    发表于 05-06 15:01 2342次阅读