15 张图, 把TCP/IP 讲得一清二楚!
来自:掘金(作者:Ruheng)
原文链接:
https://juejin.im/post/6844903490595061767
一、TCP/IP模型
二、数据链路层
封装成帧: 把网络层数据报加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址。 透明传输:零比特填充、转义字符。 可靠传输: 在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输。 差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧。
三、网络层
1、IP协议
1.1 IP地址
B类IP地址:128.0.0.1~191.255.0.0
C类IP地址:192.168.0.0~239.255.255.0
1.2 IP协议头
2、ARP及RARP协议
3、ICMP协议
四、ping
五、Traceroute
六、TCP/UDP
什么时候应该使用TCP?
什么时候应该使用UDP?
七、DNS
八、TCP连接的建立与终止
1、三次握手
2、四次挥手
「第三次分手」:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
为什么要四次分手?
为什么要等待2MSL?
保证TCP协议的全双工连接能够可靠关闭 保证这次连接的重复数据段从网络中消失
九、TCP流量控制
十、TCP拥塞控制
当 cwnd < ssthresh 时,使用上述的慢开始算法。 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。拥塞避免
2、快重传和快恢复
快重传
快恢复
当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始门限ssthresh减半。 与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1),而是把cwnd值设置为 慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️
评论