【python】 TCP网络编程:TCP三次握手和四次挥手

TCP介绍 Transmission Control Protocol

【概述】:TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

【三步走】TCP通信需要经过创建连接、数据传送、终止连接三个步骤。

TCP客户端服务器通信流程图

关于 TCP “三次握手”以及“四次挥手”
三次握手,建立连接
  • ① 【连接建立】:请求连接方(客户端)发送SYN请求连接;
  • ② 【数据传送】:服务器返回SYN/ACK确认收到发送端请求;
  • ③ 【连接释放】:客户端回馈给服务器ACK,表示确认收到服务器发送的确认。
补充:注意事项
  • ① 如果服务器没有收到客户端发送的ACK,则启动超时重传机制,这确保了TCP连接的准确性。
  • ② TCP的握手至少有三次

【拓展】:连接的建立需要经过多次交互,这就是我们日常中所说的建立连接是高成本的操作。因此,在实际生产中,通过建立连接池,来减少连接建立的频度,传输数据时直接从连接池中获取连接,而不是新建连接。

四次挥手【断开连接】
  • ①请求方(客户端)数据已经发送完毕,向服务器发送FIN请求断开连接;
  • ②服务器向客户端发送ACK,对客户端发送的FIN进行确认,并不需要即使断开;
  • ③服务器将接收到的数据处理完毕后发送FIN,断开连接;
  • ④客户端发送确认消息ACK。

【性质】:TCP是双向通信,因此关闭连接时需要双向关闭连接。首先是关闭操作的发起方关闭本端的连接,然后是关闭接收方在收到发起方的关闭请求后,除了回复关闭应答外,还要确保数据传输完成后发起一个关闭连接的请求,保证双向同时关闭。

【知识拓展】:

标志位(URG、ACK、PSH、RST、SYN和FIN)的含义介绍。

  • ACK: 确认序号有效。
  • RST:重置连接
  • SYN:发起一个新连接
  • FIN:释放一个连接

TCP编程
服务器端:

1、创建 套接字 socket
2、bind(命名IP地址和端口号)
3、listen(创建监听队列)
4、accept(拿到已经完成连接的)
5、recv/send(收发数据)
6、close(关闭)

【知识积累】

  • TCP 服务器一般情况下都需要绑定端口号,否则客户端找不到这个服务器;
  • TCP 服务器中通过监听可以将 套接字创建出来的主动套接字变为被动的,这是做 TCP 服务器时必须要做的;
客户端:

1、socket
2、connect
3、recv/send
4、close

  • TCP 客户端一般不绑定端口号,使用随机生成的端口号即可;

4、当 TCP 客户端和服务端建立好连接才可以收发数据,UDP 是不需要建立连接,直接就可以发送数据;当一个 TCP 客户端和服务端连接成功后,服务器端会有1个新的套接字,这个套接字用来标记这个客户端,单独为这个客户端服务;

5、关闭 accept 返回的套接字意味着这个客户端已经服务完毕.
6、【关于套接字】:是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。


【引言】:在网络应用程序设计时,由于TCP/IP的核心内容被封装在操作系统中,如果应用程序要使用TCP/IP,可以通过系统提供的TCP/IP的编程接口来实现。在Windows环境下,网络应用程序编程接口称作Windows Socket。为了支持用户开发面向应用的通信程序,大部分系统都提供了一组基于TCP或者UDP的应用程序编程接口(API),该接口通常以一组函数的形式出现,也称为套接字(Socket)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容