网络编程(7): TCP通信的基本流程

TCP通信涉及客户端创建socket并connect到服务器的ip和端口,经历三次握手建立连接,然后通过send/recv交换数据,最终关闭socket。服务器则需bindsocket到特定ip和端口,listen并accept客户端连接,同样使用send/recv传输数据,最后关闭侦听socket。端口复用允许服务器进程退出后快速重新使用相同的端口,通过调整操作系统保留端口的时间。
摘要由CSDN通过智能技术生成

TCP通信的基本流程

客户端

  • 调用 socket函数创建客户端 socket;
  • 调用 connect 函数尝试连接服务器 ,利用服务器已知的ip和端口进行连接,期间发生三次握手过程;
  • 连接成功以后调用 send 或 recv 函数开始与服务器进行数据交流;
  • 通信结束后,调用 close 函数关闭侦听socket。

服务器

  • 调用 socket 函数创建 socket(侦听socket);
  • 调用 bind 函数 将 socket绑定到某个ip和端口的二元组上:服务端必须有一个对客户端公开的ip和端口,这样客户端才知道如何去访问;
  • 调用listen函数开启侦听
  • 当有客户端请求连接上来后,调用 accept 函数接受连接,产生一个新的 socket(客户端 socket) — 网络通信底层就建立好了连接;
  • 基于新产生的 socket 调用 send 或 recv 函数开始与客户端进行数据交流;
  • 通信结束后,调用 close 函数关闭侦听 socket。

TIP:

  • 端口复用:服务端绑定一个ip和端口号,进程退出了,4次挥手机制,端口会被保留一段时间,那这个时候,重启这个服务器,希望能快速复用这个端口号,就需要缩短操作系统保留端口的时间,希望这个端口可以立刻被新的进程使用。
  • 一个端口号只能被一个进程使用,通过ip找机器,通过端口号找进程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值