GuoJ

博客1.0

今天不学习,明天变辣鸡~


计算机网络

目录

网络体系结构(OSI七层,TCP/IP四层,折中五层)

  1. 应用层:对应OSI的应用层7、表示层6、会话层5,应用层协议如TELNET、FTP、SMTP、DNS、HTTP
  2. 运输层:两主机应用进程利用运输层协议传送应用层报文。数据单位:TCP/UDP报文。
  3. 网络层:选择合适的网络路由和交换节点。数据单位:IP报文。
  4. 数据链路层:将IP报文组成帧(包含同步信息,地址信息,差错控制等)。数据单位:帧。 – ARP协议:根据ip地址解析mac地址。在OSI七层模型中属于链路层,在TCP/IP四层模型中属于网络层。
  5. 物理层:数据单位:比特。

三次握手 & 四次挥手

三次握手

  1. 第一次握手:客户端向服务端发起连接请求SYN。
    第一次握手:服务端收到连接请求,确认客户端发送正常,服务端接受正常。
  2. 第二次握手:服务端向客户端回复确认ACK,并发送请求SYN。
    第二次握手:客户端收到ACK和SYN,确认客户端发送正常,服务端接受正常(服务端有收到自己的请求);服务端发送正常,客户端接受正常(自己有收到服务端回复)
  3. 第三次握手:客户端向服务端发送确认ACK。
    第三次握手:服务端收到确认ACK,确认客户端接受正常,服务端发送正常(客户端有收到自己的请求)
  

Q: 为什么需要第三次握手?
A: 防止失效的报文突然传到服务器。场景:假如遇到网络阻塞,客户端的请求迟迟没有到达服务端。突然网络通畅,服务端收到了请求,并给出回复。假如只有2次握手,客户端知道请求失效,却不能传达给服务端;服务端误以为请求生效,建立连接。

四次挥手

  1. 第一次挥手:客户端向服务端发起释放请求FIN,停止发送数据,状态变为FIN-WAIT-1。
  2. 第二次挥手:服务端TCP回复ACK,通知高层应用进程客户端连接释放了,不会再收到数据,状态变为CLOSE-WAIT。此时客户端处于半关闭状态,状态变为FIN-WAIT-2,服务端仍可以发送数据。
  3. 第三次挥手:服务端向客户端发送释放请求FIN,并停止发送数据,状态变为LAST-ACK。
  4. 第四次挥手:客户端发送回复ACK,服务端收到回复后变为CLOSED,客户端状态变为TIME-WAIT,等待2MSL后变为CLOSE
  

Q: 为什么第四次挥手时,客户端要等待2MSL才关闭?
A: MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。
  第一,防止ACK报文丢失。假如服务端长时间没收到ACK(报文丢失),会重新发送一次FIN,此时客户端在TIME-WAIT状态就可以继续响应,如果直接CLOSED将无法完成重试。
  第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。

  

为什么建立连接是三次握手,断开连接是四次挥手

A: 建立连接的第二次握手合并了ACK和SYN,相当于第二次挥手和第三次挥手。在断开连接过程中,服务端回复客户端释放请求和服务端发送释放请求之间,服务端有发送数据报文的场景,所以第二、第三次挥手要分开。建立连接时,服务端响应客户端SYN和服务端发送SYN之间没有其他事要做,所以可以合并成一次握手。
  

TCP、UDP区别

TCP可靠性

  1. 数据切割(成数据块)
  2. 数据包编号(有序传输)
  3. 校验和(差错校验)
  4. 发送方超时重试
  5. TCP接收方丢弃重复(发送方重试)
  6. 流量控制(滑动窗口):防止发送的数据超出接收方缓存空间(处理能力)。
  7. 拥塞控制:网络拥塞,减少发送。
  8. ARQ协议:确认分组被接受后再发送下一个分组。

ARQ协议

  自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层和传输层的错误纠正协议之⼀。它通过使⽤确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送⽅在发送后⼀段时间之内没有收到确认帧,它通常会重新发送。ARQ包括停⽌等待ARQ协议连续ARQ协议

流量控制和拥塞控制

  1. 解决的问题 流量控制:发送的数据超出接收方数据处理能力。
    拥塞控制:网络上对于资源的请求(同一时间发送的所有数据)超出网络中所有涉及的主机、路由、链路的数据处理能力。
  2. 解决的方法 流量控制:TCP接受方在确认报文中发送一个窗口字段,通知发送方允许的最大窗口大小,限制发送方的发送速率(滑动窗口)。 拥塞控制:TCP发送方维持⼀个 拥塞窗⼝(cwnd) 的状态变量,根据网络拥塞情况动态变化。发送方发送的窗口大小取决于拥塞窗口和接受方窗口字段的最小值。

长连接&短连接

短连接:HTTP/1.0 默认短连接,每一次HTTP操作就建立一次连接,任务结束就中断。 长连接:HTTP/1.1以上 默认长连接,页面打开后,客户端和服务器之间的TCP连接不会关闭,会维持一段时间。在这个时间内连接可以复用。 标志:长连接的标志是 Response Headers 中加入代码 Connection:keep-alive。 本质:HTTP长短连接的本质是TCP长短连接。

cookie、session、token

HTTP和HTTPS

  1. 端口:http://默认端口80,https://默认端口443
  2. 安全性:HTTP->TCP明文传输。HTTPS->SSL/TLS->TCP,传输内容对称加密,对称密钥用服务器证书非对称加密。