网络基础知识
计算机网络基础知识
TCP/IP 四层结构
应用层
决定了向用户提供应用服务时通信的活动
传输层
提供处于网络连接中的两台计算机直接的数据传输
网络层
处理网络上流动的数据包
链路层
处理连接网络的硬件部分
应用层
HTTP协议
- HTTP请求报文格式
- HTTP响应报文格式
传输层
TCP
- TCP 连接的建立
三次握手过程(三握手报文)及目的
目的:建立可靠的通信信道,简单地说,就是通信双方都确认自己与对方的接收与发送都是正常的。
序号 | 方向 | 动作 | 效果 |
---|---|---|---|
1 | Client -> Sever | 发送带有SYN标志的数据包 | Server确定自己接收正常;对方发送正常 |
2 | Server -> Client | 发送带有SYN和ACK标志的数据包 | Client确定自己发送正常,接收正常;对方发送正常 |
3 | Client -> Server | 发送带有ACK标志的数据包 | Server确认自己发送正常,接收正常;对方发送正常,接收正常 |
Question:有没有其它握手方案?
- 可以将第二次握手 Server -> Client 发送SYN,ACK 报文拆分成两次 一次发送 SYN 一次发送ACK
- 三次握手已经是最佳方案,握手次数不能比3少,可以比3多,但握手次数多消耗资源也更多
- TCP 连接的释放
四次挥手
对可靠的通信信道进行关闭
序号 | 方向 | 动作 | 效果 |
---|---|---|---|
1 | Client -> Server | 发送带有FIN的数据包 | Client提出关闭请求,进入只接收不发送状态 |
2 | Server -> Client | 发送带有ACK的数据包 | Server回应收到关闭请求 |
3 | Server -> Client | 发送带有FIN的数据包 | Server提出关闭请求 |
4 | Client -> Server | 发送带有ACK的数据包 | Client发送最后一个ACK 通道关闭 |
TIME-WAIT 为何等待2MSL?
ps: MSL 为最长报文寿命
- 保证最后一个ACK被服务端收到,没收到可以再发送,并重置2MSL定时器
- 保证本地端口号在2MSL时间内不会被再次使用,避免新连接中出现旧连接的请求报文
CLOSE-WAIT 存在意义?
通知上层应用,通道即将关闭,上层应用确认关闭后,Server才发出 FIN 报文
TCP提供可靠传输服务的原因
- 可靠传输的工作原理
1.停止等待协议
每发送完一个分组就停下来,等待对方的确认,收到确认后再发送下一个分组
2.连续ARQ协议
发送方每收到一个确认就把发送窗口向前移动一个分组的位置
- 可靠传输的实现
1.滑动窗口协议