《计算机网络——自顶向下方法》精炼——2.7.2(TCP套接字编程)

“学习的敌人是自己的满足。” —— 叶圣陶

TCP套接字编程

TCP套接字编程概述

TCP是一个面向连接的运输层协议,因此可以分为发起连接的阶段和传输阶段。
在这里插入图片描述

  1. 发起连接时,客户进程创建一个客户套接字并与“欢迎套接字”进行“三次握手”。
  • 欢迎套接字是服务器进程一直运行的一个套接字,它接收来自所有客户进程的发起TCP连接请求(“三次握手”),并在这个过程中为每个客户创建一个新的专属于它的连接套接字进行信息传输。
  • 三次握手是TCP协议中的客户进程和服务器进程在创建一个TCP连接时为了确认一些基本信息所进行的信息传输。具体过程在传输层时会讲到。
  • 注意,欢迎套接字对所有客户共享,在欢迎之后服务器才会创建对于某个客户的连接套接字。举个例子:
    在这里插入图片描述
    在这张图中,A和B是两个不同的客户进程。可以看到它们向相同的欢迎套接字发起三次握手,用专属于它们自己的连接套接字进行传输。
  1. 在传输阶段,客户向服务器发送请求并接收来自服务器的响应报文。

客户进程

客户进程的代码如下:
在这里插入图片描述
我们观察这段代码中与UDP不同的部分。

  1. 第四行创建了客户套接字,与UDP相比,它的第二个参数指示生成一个TCP套接字而非UDP。
  2. 由于TCP是面向连接的运输层协议,因此第五行表示将连接请求发给“欢迎套接字”以生成一个TCP连接。
  3. 由于已经与连接套接字生成了连接,所以在第七行传输信息时不用指定服务器端套接字的位置。
  4. 第八行中也因为同样原因无需传输地址信息。

服务器进程

服务器进程代码如下:
在这里插入图片描述
依然讨论这段代码中特别的部分:

  1. 注意,这段代码创建了欢迎套接字和连接套接字,最后关闭了连接套接字,保持欢迎套接字开启。
  2. 第五行表示让serverSocket(欢迎套接字)调用listen函数,聆听客户的连接请求,函数的参数是同时请求连接的最大数。
  3. 循环内的第一行调用accept函数,它接受了客户的连接请求,创建了一个连接套接字connectionSocket。
    请添加图片描述
    我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霜_哀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值