深入理解网络通信和TCP/IP协议

深入理解网络通信和TCP/IP协议

OSI 七层模型 与 TCP/IP 五层模型

  • OSI 七层模型

    • 应用层、表示层、会话层: 为程序提供服务,处理数据以及会话管理,比如MySQL

    • 传输层:处理端与端的连接,比如TCP

    • 网络层: IP地址以及路由选择

    • 数据链路层: 提供介质访问和链路管理,比如网卡驱动

    • 物理层: 比如网卡+网线

  • TCP/IP 五层模型

    • 应用层

    • 传输层

    • 网络层

    • 数据链路层

    • 物理层

网络通信中的地址和端口号

  • 端口号为什么只有65535个
    • 因为在TCP、UDP协议报文的开头分别有16位二进制来存储端口号和目标端口号,所以端口数 = 2 ^ 16 = 65536,但是0号端口号表示所有端口,所以实际可用的只有65535个
    • 虽然端口号只有65535个,并不是一台主机只能保持最多65535个TCP连接,具体得根据服务器和客户端看

TCP三次握手

  • 流程
    • 第一次握手
      • 客户端将请求报文SYN=1,请求报文的序列号seq=J,并将数据包一起发往服务端,客户端处于同步发送状态(SYN_SENT),等待服务端确认
    • 第二次握手
      • 服务端收到数据包通过报文标志位SYN=1知道客户端请求建立连接,服务端应答报文标志位SYN=1、ACK=1,应答报文的确认号ack=J+1,应答报文的序列号seq=K,并将数据包发送到客户端来确认连接,服务端处于同步接收状态(SYN_RCVD)
    • 第三次握手
      • 客户端收到应答报文后,检查发送过来的标志位,如果正确会将标志位ACK=1、确认号ack=K+1,并将数据包发给服务端,服务端检查没问题后,客户端和服务端进入完成建立状态(ESTABLISHED),后续就可以进行数据传输了
  • 简概流程
    • TCP建立连接时,客户端首先发送一个SYN报文给服务端,表示想要建立连接
    • 服务端收到后,回复一个SYN+ACK报文,既表示同意连接,也确认收到了客户端的SYN报文
    • 客户端再次回复一个ACK报文,确认收到了服务端的SYN+ACK报文
  • 问题: 为什么TCP握手需要三次
    • 确认双方接收和发送的能力是否正常
    • 通过双方相互告知起始序列号,来确认序列号已被对方收到,可以保证可靠性传输
    • 为什么不是一次、二次
      • 为了防止已失效的连接请求报文段突然传到服务端导致问题
        • 如果此时客户端发送的延迟握手信息被服务端收到,然后服务端进行响应了,服务端认为客户端已经和它建立连接,并一直等待客户端发来的数据,这样会让服务端很多资源被浪费

TCP四次挥手

  • 流程

    • 第一次挥手

      • TCP是全双工的,客户端和服务端均可发起第一次分手
      • 客户端发送FIN=1表示数据发送完毕,服务端可关闭接收,但仍可发送数据给客户端,此时客户端等待服务端确认释放连接
    • 第二次挥手

      • 客户端向服务端发送释放连接请求后,服务端确认无更多数据,发送ACK=1的响应,并进入CLOSE_WAIT状态等待关闭连接

      • 第三次挥手

        • 服务端已发送完所有数据给客户端,并通过发送FIN=1通知客户端关闭接收连接
        • 服务器目前处于LAST_ACK状态,等待客户端确认接收请求
    • 第四次挥手

      • 服务端已发送完所有数据给客户端,并通过发送FIN=1通知客户端关闭接收连接,服务器目前处于LAST_ACK状态,等待客户端确认接收请求
  • 简概流程

    • TCP断开连接时,客户端首先发送一个FIN报文给服务端,表示它已完成数据发送,希望关闭连接
    • 服务端收到后,回复一个ACK报文,确认收到了客户端的关闭请求,此时,服务端可能还有数据要发送,所以不会立即关闭连接
    • 当服务端也完成数据发送后,它会发送一个FIN报文给客户端,表示自己也准备关闭连接
    • 客户端收到后,再次回复一个ACK报文,确认收到了服务端的关闭请求
相关推荐
幽兰的天空9 小时前
介绍 HTTP 请求如何实现跨域
网络·网络协议·http
lisenustc9 小时前
HTTP post请求工具类
网络·网络协议·http
心平气和️9 小时前
HTTP 配置与应用(不同网段)
网络·网络协议·计算机网络·http
心平气和️9 小时前
HTTP 配置与应用(局域网)
网络·计算机网络·http·智能路由器
Gworg9 小时前
网站HTTP改成HTTPS
网络协议·http·https
Mbblovey10 小时前
Picsart美易照片编辑器和视频编辑器
网络·windows·软件构建·需求分析·软件需求
北顾南栀倾寒10 小时前
[Qt]系统相关-网络编程-TCP、UDP、HTTP协议
开发语言·网络·c++·qt·tcp/ip·http·udp
GZ_TOGOGO11 小时前
PIM原理与配置
网络·华为·智能路由器
7ACE11 小时前
Wireshark TS | 虚假的 TCP Spurious Retransmission
网络·网络协议·tcp/ip·wireshark·tcpdump
大丈夫立于天地间12 小时前
ISIS基础知识
网络·网络协议·学习·智能路由器·信息与通信