TCP协议分析
1.数据从应用层到TCP层的时候是否会因为数据链路层的MTU限制的关系 分段在给IP层传输啊?
还是到了IP层以后在分片给数据链路层啊
有的书说
TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。
有的书又说是在IP层也就是网路层完成数据分片的功能到底是在哪里完成该功能啊
2,客户端给服务器端发数据 为什么通过路由器的时候IP会重新组合数据包又重新分片呢? 直接把发过来的数据包分片转发不行吗
3,最后一个问题
目前有网卡可以支持多条数据同时传送吗? 网线支持多条数据同时传输吗我说的不是全双工 而是像路由器 很多数据到路由器端口以后怎么转发出去的啊?是排队一个一个转发出去 还是直接从几十个机器来的并发出去啊?
------解决方案--------------------1.两种说法都不算错
tcp层可以根据MTU来决定自己的mss, 保证payload + tcp/ip header 不超过本地链路层的mtu
但是到了router因为router可能连接不同link,mtu也可能不同,如果next hop mtu 小于当前payload,就必须做ip fragmentation,这样就算ip层做的了
2.就是1中说的情况有时需要fragmentation + reassembly
3. 路由中有转发矩阵, 支持多路同时传输,可以想象成N个input 到 N 个output,最佳情况当然是无竞争同时传输,但是如果有两个packet竞争同一个output,就要排队
一般pc的网卡不需要支持多个port,最多是多个网卡做简单路由,效率比专用路由器当然差远了
同一个port的物理链路一般同一时间只能传一路数据,比如ethernet,当然特殊链路可以Multiplexing,不过这个和你说的路由同时传送不是一个意思