TCP协议通讯流程

TCP协议通讯流程

链接

一个服务器有可能有多个客户端来进行链接,链接一旦多了起来,同样需要对其进行管理。所以创建链接的本质是客户端和服务器要创建对应的数据结构,双方要维护链接,要在系统层面都要提供一批数据结构来管理这批链接。

CS模型:客户端主动发起链接、服务器被动,不会主动发起链接就叫做CS模型

BS模型:通过游览器去访问服务器、本质上也是CS模型

TCP建立链接的过程

在客户端,tcp建立链接的方式叫做三次握手

下图为建立链接的过程:
在这里插入图片描述
服务器初始化:

  • 调用socket, 创建文件描述符;
  • 调用bind, 将当前的文件描述符和ip/port绑定在一起; 如果这个端口已经被其他进程占用了, 就会bind失败;
  • 调用listen, 声明当前这个文件描述符作为一个服务器的文件描述符, 为后面的accept做好准备;
  • 调用accecpt, 并阻塞, 等待客户端连接过来;

建立连接的过程:

  • 调用socket,创建文件描述符
  • 调用connect,向服务器发送连接请求
  • connect会发出SYN数据报并阻塞等待服务器的应答(第一次)
  • 服务器收到客户端的SYN会应答一个SYN-ACK段表示"同意建立连接"(第二次)
  • 客户端收到SYN-ACK后会从 connect返回,同时应答一个ACK段(第三次)

这个建立连接的过程就称为三次握手。

断开链接的过程

  • 如果客户端没有更多的请求了, 就调用close()关闭连接, 客户端会向服务器发送FIN段(第一次);
  • 此时服务器收到FIN后, 会自动回应一个ACK, 同时read会返回0 (第二次);
  • read返回之后, 服务器就知道客户端关闭了连接, 也调用close关闭连接, 这个时候服务器会向客户端发送一个FIN; (第三次)
  • 客户端收到FIN, 再返回一个ACK给服务器; (第四次)

这个断开连接的过程, 通常称为 四次挥手
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值