1. tcp协议
可靠的连接
1.1 报文格式
1.2 三次握手
1.3 四次挥手
为什么TIME_WAIT
需要2MSL
的等待时间?
(a)
为了实现可靠的关闭
(b)
为了让过期的报文在网络上消失
对于(a)
, 假设host
发给server
的last ack
丢了。
server
收不到ACK
,就会重发FIN
报文。
为了让host
可以接收到重传的FIN
报文,就需要有TIME_WAIT
状态。
那么这个时间一定为2MSL
吗?
这取决于server
端的RTO
超时重传时间。
RTO > 2MSL
, 那么2MSL
时间就不够;
RTO < MSL
, 那么MSL
的时间就足够。
因此只有当MSL<= RTO <= 2MSL
时,才会考虑2MSL
。
对于(b)
, 为了让旧的连接在网络中消失,需要考虑极端情况。
Host
的Last ACK
经过MSL
才到达server
, 而恰好此时server
重传了一个FIN
报文。而这个报文经过MSL
才到达host
; 因此需要2MSL
才能关闭。
1.4 窗口机制
1.5 序列确认
1.6 超时重传
1.7 网页通信原理
以访问主机A访问百度网页为例
- dns协议将域名解析为百度ip
- 封装tcp连接请求,跨网段dmac为网关mac。
dport:80
sport:15102
sip:IP_A
dip:IP_BAIDU
smac:mac_A
dmac: mac_gate
ether type:0x0800 - 百度网页服务器发出响应
dport:15102
sport:80
sip:IP_BAIDU
dip:IP_A
smac:mac_BAIDU
dmac: mac_A
ether type:0x0800 - 主机封装
http
请求在tcp
数据中发给百度服务器 - 百度服务器收到
http
请求,产生http
响应。 - 主机浏览器解
http
响应,显示在主机上。
2.udp协议
无连接,适合于流媒体。
2.1 报文格式
3 交换机工作原理
(1) 交换机收到广播报文后执行泛洪行为;
泛洪:除了向收到该数据口的其他所有商品复制一份相同报文。
(2) 交换机有自己的端口转发表,其中的表项是mac:交换机端口;交换机根据端口转发表进行转发。如果表项中没有对应的mac, 交换机会进行泛洪。
(3) 交换机会用收到的报文来更新自己的端口转发表,即smac:交换机端口
表项的更新。
(4) 交换机会将收到和发送为同一端口的数据帧丢弃
交换机的一个端口可对应多个mac
地址。
一个mac
地址只能对应一个端口。