http中如何建立TCP连接
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章为大家展示了http中如何建立TCP连接,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 建立TCP连接1.1 TCP 服务端与客户端web服务的本
千家信息网最后更新 2026年11月02日http中如何建立TCP连接web服务的本质,是一个TCP server, 浏览器则是一个TCP client。图3中黄色的部分就是建立TCP连接,只有先建立连接,浏览器才能通过这个连接发送http请求。你可能注意到,我直接越过了DNS解析,直接讲解第2部分内容,这是因为必须先理解TCP连接,才能理解DNS解析。 下面的代码是一份TCP 服务端的示例 上面所画的,阐述的是一种十分简单的理解,只是对功能进行了描述,并没有从技术层面上解答何为tcp3次握手,而想要从技术层面上做出解释,则必须先了解TCP头结构 下图是TCP头结构,客户端与服务端发送数据时,必须准守TCP/IP协议,按照指定的格式发送数据,TCP的头结构携带了许多关键信息,比如源端口号与目的端口号 注意看上图中,中间白色的那一块区域,找到SYN和ACK,这两个各占1个bit位,是3次握手的关键: 这便是TCP建立连接时的3次握手 看上去,似乎两次握手就可以了,服务端在收到SYN包后回复ACK确认可以建立连接不就行了么,为何非要让服务端也发SYN,客户端再回ACK呢? 之所要求3次握手,是为了防止已经失效的SYN包意外的到达服务端,造成双方的不一致。 考虑这种情况,客户端向服务端发出了SYN包S1, 可好巧不巧的是,S1由于网络阻塞或其他原因在网络中滞留,毕竟从客户端到服务器隔着十万八千里呢,中间是好多个交换机路由器等网络设备,网络也会堵车。发生网络堵车后,客户端以为S1丢包了,于是又发出一个SYN包S2,S2顺利的到达服务端,如果握手只需要两次,那么服务端回一个ACK就建立好连接了。 可别忘了网络中还有一个S1,S1并不知道客户端又发出了S2,它恪尽职守的穿越重重障碍,在S2之后到达服务端,如果这个时候S2所建立的连接还存在,那么服务端会无视S1,但如果S2所建立的连接已经断开了呢?服务端会以为S1是一个新的连接请求,服务端回ACK,建立连接,客户端收到ACK后,就有点懵逼了,它完全不知道是怎么回事,也不知道该如何处理这个突然到达的ACK包,这样一来,两边都会浪费很多资源。 2次握手建立连接,会发生上述的意外,但是3次握手就不会,服务端与客户端都要发送SYN包并回复对方ACK包,只有这样才会建立连接,服务端在回复ACK的时候,顺带着把SYN设置为1,这样就免去了单独发送SYN包的步骤,3次握手即可建立连接。
本篇文章为大家展示了http中如何建立TCP连接,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
1. 建立TCP连接
1.1 TCP 服务端与客户端
import socket
# 指定协议
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 让端口可以重复使用
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 绑定ip和端口
server.bind(('0.0.0.0', 8080))
# 监听
server.listen(1)
# 等待消息
clientsocket, address = server.accept()
# 接收消息
data = clientsocket.recv(1024)
# 关闭socket
clientsocket.close()
server.close()
客户端代码的编写也十分容易
import socket
import time
host = '127.0.0.1'
port = 8081
addr = (host, port)
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 连接server
client.connect(addr)
# 向server发送数据
client.send(b'I am client')
# 接收server返回的数据
revcdata = client.recv(1024)
# 收到的数据都是bytes类型
print(revcdata.decode(encoding='utf-8'))
time.sleep(1)
client.close()
建立TCP的过程,有一个重要的概念---3次握手。这个问题经常在面试中被用来考察应聘者对于socket的了解程度。
1.2 什么是TCP3次握手
客户端与服务端在建立正是的连接之前,要互相试探着询问对方是否愿意与自己建立连接
客户端向服务端发送syn包,所谓的syn包,是指SYN为1
服务端收到syn包以后,发送syn+ack包,这时,SYN和ACK都是1
客户端向服务端发送ACK包,ACK标识位是1

1.3 为什么是3次握手,而不是2次
上述内容就是http中如何建立TCP连接,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
服务
客户
客户端
网络
数据
内容
结构
意外
代码
关键
口号
只有
对方
就是
层面
技术
技能
时候
浏览器
消息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技园
高科技互联网
美国互联网保险保险科技
互联网科技保险
美国互联网科技巨头监管
金融科技与互联网金融
互联网科技金融公司
紫鲸互联网科技
云电互联网科技
科技互联网创业计划书
成都仁贤领冠互联网科技有限公司
互联网还是高科技吗
苏州五指互联网络科技有限
崇明区互联网教育科技售后服务
呼和浩特新华互联网科技学院
链环科技传统企业怎么转型互联网
悟空问答互联网科技
广州三三互联网科技有限公司
互联网科技创新创业项目
互联网高科技绘画
上海喔噻互联网科技有限公司
科技创新与互联网经济
互联网是不是新科技
科技类互联网
互联网科技创新企业排名
互联网金融科技公司干啥的
黑科技闪耀互联网之光
互联网营销推广黑科技
互联网硬科技公司
颐高云石互联网科技