赞
踩
当我们在window系统或unix系统中使用应用程序发送一个“你好”文本数据时,是怎样传输出去并让对方接收的的?
1、在传输层,将“在吗?”分成段,加上源端口和目的端口,防止出错的校验码,按顺序编号。
在数据“在吗?”发送之前,首先判断这个程序是应用TCP还是UDP方式传输,判断是使用TCP协议传输,先与目标端口方进行联系,你在不在?我在的,三次握手,得到同意,并告诉自己能最大接收的MTU、确认号,将确认号封装到TCP数据包里,一切OK,说明接收方的电脑是开着的,应用程序也是开着的,开始发送。
TCP数据包大小=20字节TCP头部+最大1460字节数据=1480最大字节数。
数据包,在每层的数据都可统称为数据包。
2、到达网络层,这个TCP数据包作为数据,根据带TCP报文的“在吗?”这段数据的大小将进行分片,不超过自己能传输的最大数据值就不分了,因为接口层最大传输是1500字节,网络层自身的IP头部就有20字节,IP数据包最大为1480。
IP数据包大小=20字节IP头部+最大1480字节数据=1500最大字节数。
在网络层将TCP数据包封装目标IP地址、源IP地址、协议类型(TCP 还是UDP)、防止出错的校验码、标识(ID号)和标志(分片的还是不分片的)。在封装IP地址时,IP协议判断目标IP地址是不是属于本地网段,不属于本地网段,IP数据包将发送到网关。准备完毕IP数据包发送出去。
3、接口层,收到网络层的IP数据包作为数据,封装源MAC地址和目标MAC地址,协议类型(IP还是ARP、ICMP),防止出错的校验码。这里如果不知道接收方的MAC地址,先将数据存入缓存中,接着使用ARP协议查询,同一链路直接获取接收主机的MAC地址,不是同一链路查询网关地址(下一跳),得到具体网关MAC地址后,再封装。OK,通过网卡发送数据帧。
“在吗?”的数据帧通过网卡进入网线传输出去,首先是根据交换机转发过滤表来到网关路由器的接口。
路由器网关接口收到数据帧,对数据包进行解封装,查看网络层头部信息的目的 IP 地址的网络地址(注意IP地址是由网络地址和节点地址两部分组成),根据路由表匹配的IP数据包中的目标IP地址,如上图,匹配到192.168.0.0网络地址的下一跳是172.16.10.253,G0/0/0是出接口,将IP数据包传输到路由器B的出接口G0/1,IP数据包装将封装为以太数据帧,加上源MAC是路由器B的出接口G0/1的MAC地址,目的MAC是接收主机的MAC地址。
交换机工作在OSI模型的第二层,不带路由功能的交换机一般称为二层交换机,路由器工作在OSI模型的第三层,TCP/IP协议模型里工作在二层网络层。
接收主机B通过网线接收到数据包,在网卡通过驱动程序解析出IP数据包交给操作系统对IP数据包进行处理,得到的TCP数据包也由操作系统处理,最后根据端口号调用传送给应用程序。
以上是一个简单流程,实际中包含每一层的进行数据校验、协议类型判断。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。