常见网络知识总结
1.osi模型与五层架构模型
2.五层架构模型中各层对应的网络协议
层 | 协议 |
---|---|
应用层 | HTTP,SMTP |
传输层 | TCP, UPD |
网络层 | IP, ICMP |
数据链路层 | PPP |
物理层 | IEEE802.3 |
3.TCP三次握手和四次握手
三次握手(建立连接)
TCP是一种面向连接的协议,在发送数据之前,双方必须建立一条可信任的连接。
- 第一次:Client发送一个包含标志位SYN=1, Seq=随机数J的数据包给Server。Client处于SYN_SENT状态。
- 第二次:Server检查SYN=1之后知道Client想建立连接,发送一个包含SYN=1, ACK=1, ACKnum=J+1,Seq=随机数K的数据包给Client。Server处于SYN_RCVD状态。
- 第三次:Client检查SYN=1,ACK=1,ACKnum=J+1之后,发送ACKnum=K+1给Server,Server检查ACKnum=k+1之后连接建立。Client和Server均处于established的状态。
ACK: 确认连接成功标志位,ACKnum确认数据以及发送完成标志位。
四次握手(断开连接)
TCP是全双工通信,双方可以互相发送数据。所以需要两次确认。
- 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
- 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
- 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
- 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
3. 三次握手可以换成两次吗
不行,三次握手可以防止向已失效的连接返送请求。
网络知识点
4. 为什么断开要四次握手
TCP 协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP 是全双工模式,这就意味着,当 A 向 B 发出 FIN 报文段时,只是表示 A 已经没有数据要发送了,而此时 A 还是能够接受到来自 B 发出的数据;B 向 A 发出 ACK 报文段也只是告诉 A ,它自己知道 A 没有数据要发了,但 B 还是能够向 A 发送数据。
5.浏览器中点击“www.baidu.com"之后发生什么
- 由域名→IP地址 寻找IP地址的过程依次经过了浏览器缓存、系统缓存、hosts文件、路由器缓存、 递归搜索根域名服务器。(DNS域名解析)
- 建立TCP/IP连接(三次握手具体过程)
- 由浏览器发送一个HTTP请求
- 经过路由器的转发,通过服务器的防火墙,该HTTP请求到达了服务器
- 服务器处理该HTTP请求,返回一个HTML文件
- 浏览器解析该HTML文件,并且显示在浏览器端
- 断开连接四次握手