礼服外贸网站,网站建设策划书缺点,网站开发的流程 知乎,外贸网站建设步骤TCP/IP协议栈的封装过程 用户从应用层发出数据先会交给传输层#xff0c;传输层会添加TCP或者UDP头部#xff0c;然后交给网络层#xff0c;网络层会添加IP头部#xff0c;然后交给数据链路层#xff0c;数据链路层会添加以太网头部和以太网尾部#xff0c;最后变成01这样…TCP/IP协议栈的封装过程 用户从应用层发出数据先会交给传输层传输层会添加TCP或者UDP头部然后交给网络层网络层会添加IP头部然后交给数据链路层数据链路层会添加以太网头部和以太网尾部最后变成01这样的比特流之后通过物理线路传出去这个就是数据封装的过程那么TCP头部还有IP头部以及以太网头部里面具体包含哪些内容呢接下来我们具体看一下TCP头部和IP头部以及以太网头部。
TCP Segment 图中列举了TCP头部的一部分主要就是源源目端口号数据到达用户PC后就可以通过端口号识别到底是发给哪一个应用程序的数据比如前面讲到了21号端口我就知道应该发给FTP去处理如果是23号端口号我就知道是发给Telnet除此之外还包含了序列号以及确认序列号通过这两个参数就可以保证数据的可靠性传输。用户A要和用户B进行通信它发了三个包序号号分别是1 2 3这边是主机A,这边是主机B,那么它发了三个包第一个报文它的序列号是1第二个报文序列号是2第三个报文序列号是3B收到之后它也会回包它回的时候也会写到序列号它的序列号比如说为A,但是它会回一个确认序列号确认序列号回的是多少呢回的是44代表什么意思代表前三个报文我已经收到了你下次再给我发包的时候序号号就得发4所以主机A下次再发包那么这个时候它在发包的序列号就为4。同样A也会回一个确认序列号确认序列号因为B给我发包它的序列号等于A所以我在回去的序列号就回的是A1.就是通过这两个序列号和确认序列号我们是可以保证数据可靠性传输的。
IP Packet IP头部它的长度也是不固定的20到60个字节就看有没有底下的IP选项如果有的话最大可以达到60字节没有的话那么它的固定长度就是20字节。里面包含了第一个就是版本号到底是V4还是V6的版本我需要在这边进行标识首部长度就是指的是IP头部它到底是20字节还是40字节还是60字节呢我要标识一下。服务类型主要做Qos的处理总长度就是指IP包的总长度。后面的三个部分标识符标志片偏移它们主要是用于做分片以及分片后的重组。除此这外还有生存时间也就是我们的TTL,大家应该都有做过ping包ping的时候它就会有一个TTL,那么TTL是用来干嘛的呢它叫生存时间主要就是三层防环每经过一台三层设备TTL就会减一如果变为零之后就直接丢弃。协议号我们说了上层有可能是TCP,也有可能是UDP,我们可以通过协议号去标识上层到底是TCP还是UDP,TCP的话它的协议号是6,UDP的是17。当然IP地址里面最重要的东西就是源目IP地址所有的设备都需要根据源目IP地址去识别看一下是不是发给自己的如果是发给自己的我才会继续解析TCP头部然后把数据传给最终用户。
IP分片问题 什么时候需要做分片处理
每个设备在发包的时候它都会将自己的数据长度和MTU值做对比如果数据长度大于MTU,那么这个时候就需要做分片处理。
主机A在发包的时候它就会看接口的MTU值到底是多少如果是数据包的长度大于MTU值这个时候就会拆包把它分成两个包那么这个就是做分片。分片可以是在发送端也就可以在PC这边做也可以在中间的路由器做分片的处理。因为每一个接口它的MTU值都是不一样的所以如果中间在转发的时候MTU值变了就会继续分片所以可以看到分片是可以在发送端也可以在中间路由器便是如果数据要重组只有在目的地才能重组也就是数据到了终点之后我才会把它组合成原来的报文。 标识符用于标识是不是同一个报文把一个报文折成三片三片它的标识符都是一样的这样的话我就知道它是否属于同一个报文。
刚才分成三片之后可能由于网络延迟它们不会按照顺序到达接收端那么这个时候到底哪一个是第一片哪一个是第二片哪一个是第三片就会通过片偏移去标识通过偏移的位置我去标识谁是第一片谁是第二片谁是第三片。
另外到达接收端的时候 它肯定不知道你是分成多少片的。所以通过标志去标识一下谁是最后一片所以通过这三个字段就可以把数据做分片以及分片后的重组。
以太网帧 以太网帧的格式它有两种一种就是Ethernet_II一种是802.3我们平时发送的数据都是采用这种Ehernet_II的封装方式而802.3一般主要用于生成树它发的一些控制帧一般就会使用这种802.3这种格式。Ethernet_II的这种封装格式的话这主要的内容就包含了DMAC,SMAC还有一个两字节的L/T类型用于标识上层的协议上层到底是IP,ARP,这个时候就骑过字段去标识比如说是IP的话标识的时候填充的就是0800,如果是arp填充的arp填充的就是0806,所以看到这个字段我就可以知道上层交给的是IP,还是ARP,所以可以看到第一层它虽然功能不一样但是它是有衔接关系的。
比如我们可以看到这是以太网那么这个是IP,这个是TCP,然后这是我们的应用层数据在以太网头部里面我通过类型标识上层可能是IP还是ARP,网络层再通过协议号去标识上层到底是TCP还是UDP然后TCP再通过端口号去标识应用程序到底是传给邮箱还是传给FTP,那么这个时候就靠端口号