深入理解网络通信和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报文,确认收到了服务端的关闭请求
相关推荐
shiyi.十一15 分钟前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
DFT计算杂谈1 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
中微极客3 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
猿的天空7 小时前
机器人双手迎来全栈训练系统:灵初智能EgoSteer让灵巧手无所不能
网络·人工智能·计算机·ai·程序员·机器人·编程
Xzaveir_7777 小时前
OPPO、vivo、荣耀号码认证:多终端拨测矩阵与异常复现
大数据·网络·科技·矩阵·产品经理·ai-native
wuqingshun3141597 小时前
从网络角度来看,用户从输入网址到网页显示,期间发生了什么?
网络
牛马工作号7 小时前
Zigbee 专业详解:从协议到排障
网络·物联网·安全
牛马工作号7 小时前
Wi‑Fi 完全指南:从 802.11 协议到 Wi‑Fi 7、AC+AP 与 Mesh 工程组网
网络·网络协议·智能路由器
智慧光迅AINOPOL7 小时前
智慧工厂全光网怎么扛住AGV与强电磁?光电复合缆与工业级方案
网络·全光网解决方案·全光网·酒店全光解决方案·泛住宿全光网解决方案
JoyCong19988 小时前
手机变身“司令台”!ToDesk AI安卓版上线
网络·人工智能·科技·智能手机·电脑·远程工作·远程操作