2021-02-01 分类: 网站建设
TCP/IP网络模型
TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。
在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。
OSI七层模型
当然在理论上,还有一个OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。这是一个理想模型,由于其复杂性并没有被大家广泛采用。
链路层
1 以太网和802封装
以太网封装是以RFC894定义的 而802封装则是RFC1042定义的 主机需求RFC要求: (1)必须支持以太网封装 (2)应该支持与RFC894混合的RFC1042封装 (3)或许可以发送RFC1042封装的分组
2 SLIP
适用于RS-232和高速调制解调器接入网络 (1)以0xC0结束 (2)对报文中的0xC0和ESC字符进行转义 缺点:没有办法通知本端IP到对端;没有类型字段;没有校验和
3 CSLIP
将SLIP报文中的20字节IP首部和20字节TCP首部压缩为3或5字节
4 PPP协议
修正了SLIP协议的缺陷,支持多种协议类型;带数据校验和;报文首部压缩;双方可以进行IP地址动态协商(使用IP协议);链路控制协议可以对多个链路选项进行设置。
5 环回接口
用于同一台主机上的程序通过TCP/IP通信。 传给环回的数据均作为输入; 传给该主机IP地址的数据也是送到环回接口; 广播和多播数据先复制一份到环回接口,再送到以太网上。
6 MTU
对数据帧长度的大限制,如果数据分组长度大于这个数值,需要在IP层对其分片。 注意:发往以太网的数据要考虑路径MTU
IP网际协议
IP是TCP/IP中最为核心的协议,所有的TCP、UDP、ICMP等协议均以IP数据报的格式传输。IP协议提供不可靠、无连接的服务,它不保证数据报一定可以送达目的,也不保证数据报的先后次序。
IP首部格式为
注:网络字节序:32bit传输的次序为0-7bit, 8-15bit, 16-23bit, 24-31bit(即big endian字节序)
IP路由
IP路由选择是逐跳进行的。IP并不知道到达任何目的的完整路径(当然,除了那些与主机直接相连的)。所有的IP路由选择只为数据报传输提供下一站路由器的I P地址。它假定下一站路由器比发送主机更接近目的,而且下一站路由器与该主机是直接相连的。
IP路由选择主要完成以下这些功能:
1) 搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。 2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行讨论。 3) 搜索路由表,寻找标为“默认”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。
如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。
IP路由选择是通过逐跳来实现的。数据报在各站的传输过程中目的IP地址始终不变,但是封装和目的链路层地址在每一站都可以改变。大多数的主机和许多路由器对于非本地网络的数据报都使用默认的下一站路由器。
IP路由选择机制的两个特征: (1)完整主机地址匹配在网络号匹配之前执行 (2)为网络指定路由,而不必为每个主机指定路由
IP地址和MAC地址分类
按IP地址范围划分
按照通讯模式划分
单播是对特定的主机进行数据传送。如给某一个主机发送IP数据包,链路层头部是非常具体的目的地址,对于以太网来 说,就是网卡的MAC地址。广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。
子网掩码
子网掩码用来确定多少bit用于网络号和多少bit用于主机号。
给定IP地址和子网掩码以后,主机就可以确定IP数据报的目的是: (1)本子网上的主机; (2)本网络中其他子网中的主机; (3)其他网络上的主机。
如果知道本机的IP地址,那么就知道它是否为A类、B类或C类地址(从IP地址的高位可以得知),也就知道网络号和子网号之间的分界线。而根据子网掩码就可知道子网号与主机号之间的分界线。
封装
以太网数据帧的物理特性是其长度必须在46~1500字节之间,而数据帧在进入每一层协议栈的时候均会做一些封装。
而更具体的以太网帧格式为
分用
当目的主机收到一个以太网帧时,就在协议栈中从底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部的协议标识,以确定接收数据的上层协议。这个过程称作分用。
分段 (fragmentation)
老的内核通常在IP层处理IP分段,IP层可以接收0~64KB的数据。因此,当数据IP packet大于PMTU时,就必须把数据分成多个IP分段。 较新的内核中,L4会尝试进行分段:L4不会再把超过PMTU的缓冲区直接传给IP层,而是传递一组和PMTU相匹配的缓冲区。这样,IP层只需要给每个分段增加IP报头。但是这并不意味着IP层就不做分段的工作了,一些情况下,IP层还会进行分段操作。
第一个表格中:
第二个表格中:
需要注意的是,只有第一个包带有原始包的完整 IPv4 + TCP/UDP 信息,后续的分包只有 IPv4 信息。
分包带来的问题:
MTU
一个网络接口的 MTU 是它一次所能传输的大数据块的大小。任何超过MTU的数据块都会在传输前分成小的传输单元。MTU 有两个测量层次:网络层和链路层。比如,网络层上标准的因特网 MTU 是 1500 bytes,而在连接层上是 1518 字节。没有特别说的时候,往往指的是网络层的MTU。
要增加一个网络接口 MTU 的常见原因是增加高速因特网的吞吐量。标准因特网 MTU 使用 1500byte是为了和 10M 和 100M 网络后向兼容,但是,在目前1G和 10G网络中远远不够。新式的网络设备可以处理更大的MTU,但是,MTU需要显式设置。这种更大MTU的帧叫做“巨帧”,通常 9000 byte 是比较普遍的。
相对地,一些可能得需要减少MTU的原因:
MTU 不能和目前任何 Internet 网络协议混在一起,但是,可以使用一个路由器将不同 MTU 的网段连在一起。
TCP fragmentation
每个TCP数据包(segment)的大小受MSS(TCP_MAXSEG选项)限制。大报文段长度 ( MSS )表示 TCP 传往另一端的大块数据的长度。当一个连接建立时(SYN packet), 连接的双方都要通告各自的MSS。
一般说来,如果没有分段发生, MSS还是越大越好。报文段越大允许每个报文段传送的数据就越多,相对IP和TCP首部有更高的网络利用率。当TCP发送一个SYN时,或者是因为一个本地应用进程想发起一个连接,或者是因为另一端的主机收到了一个连接请求,它能将MSS值设置为外出接口上的MTU长度减去固定的IP首部(20 bytes)和TCP首部长度(20 bytes)。对于一个以太网,MSS值可达1460字节(详细参考tcp_sendmsg)。
TCP/SCTP会将数据按MTU进行切片,然后3层的工作只需要给传递下来的切片加上 ip头就可以了(也就是说调用这个函数的时候,其实4层已经切好片了)。
Segmentation offload
现在很多网卡本身支持数据分片,这样,上层L4/L3就可以不用进行分片(大64KB),而由NIC来完成,从而提高网络性能。
PMTU (Path Maximum Transmission Unit Discovery)
PMTU 的用途是动态的确定从发送端到接收端整个路径上的最小 MTU,从而避免分包。注意,PMTU 只支持 TCP,对其他协议比如 UDP 无效。而且,如果发送方已经开启了 PMTU,那么它发送的所有 TCP/IP 包的 DF 标志都被设置为 1 即不再允许分包。当网络路径上某个路由器发现发送者的包因为超过前面转发路径的 MTU 而无法发送时,它向发送者返回一个 ICMP "Destination Unreachable" 消息,其中包含了那个 MTU,然后发送者就会在它的路由表中将该mtu值保存下来,再使用较小的 MTU 重新发出新的较小的包。
例子1:超过 MTU,DF = 0 => 路由器分包、发送,接收主机组装
例子2:超过,DF = 1 => PMTU,发送者重新以小包发送
网页标题:什么是TCP/IP网络模型详解
当前URL:/news/98513.html
成都网站建设公司_创新互联,为您提供标签优化、品牌网站建设、做网站、网页设计公司、Google、建站公司
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
猜你还喜欢下面的内容