<>系列文章目录

tcp介绍

tcp特点

tcp客户端

一、tcp介绍

Tcp协议,传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义

TCP通信需要经过创建连接、传输数据、终止连接三个步骤

TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中的“打电话”(注:之前学习的udp,在通信前,不需要建立相关的链接,只需要发送数据即可,类似于“写信”,数据有可能丢失,没有tcp安全)

二、tcp特点

1.   面向连接

通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输

双方间的数据传输都可以通过这一个连接进行

完成数据交换后,双方必须断开连接,以释放系统资源

这种连接是一对一的,因此TCP不适用于广播的应用程序,基于广播的应用程序请使用udp协议

2.   可靠传输

1)tcp采用发送应答机制

Tcp发送每一个报文段都必须得到接收方的应答才认为这个tcp报文段传输成功

(举个例子:平时我们用迅雷下载电影,明明是在下载东西,而流量监控会显示我们的下载速度是几兆每秒,同时也会显示一个上传速度,可能显示十几K每秒,这个上传的就是反馈回去的应答。因为一部电影一般都是很多个G的大小,不可能一次性下载完成,实际上是分成了很多个小片段下载的,我们下载成功一个,程序就会上传反馈提示这个片段下载成功,然后再进行下一个片段的下载)

2)超时重传

发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段

tcp为了保证不发生丢包,就给每一个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收

然后接收端实体对已经成功收到的包发回一个相应的确认(ACK),如果发送端实体在合理的往返时延(RTT)内收到确认,name对应的数据包就被假设为丢失将会进行重传

3)错误校检

Tcp用一个校检和函数来检验数据是否有错误,在发送和接收时都要计算校检和

4)流量控制和阻塞管理

流量控制用来避免主机发送的过快而是对方来不及完全收下

Tcp和udp的不同点

·面向连接(确认有创建第三方交握,连接已创建才做传输)

·有序数据传输

·重发丢失的数据包

·丢弃重复的数据包

·无差错的数据传输

·阻塞/流量控制

总的来说,tcp比udp更加高效,稳定,可靠。现在我们基本上都是用的tcp

三、Tcp客户端

所谓的服务器端:就是提供服务的一方。二客户端:就是需要被服务的一方

Tcp的客户端要比服务器端简单很多,如果说服务器端是需要自己买手机,插电话卡,设置铃声,等待别人打电话的流程话,那么客户端就只需要找一个电话亭,拿起电话拨打即可,流程少很多

大概思路:

第一步:创建套接字

第二步:链接服务器

第三步:收发数据

第四部:关闭套接字

比之前的udp多了一步链接服务器

操作:

 注:tcp使用send发送数据,而且tcp是发送之前就已经建立了连接,就不需要再写端口号了

代码:
import socket def main(): # 1. 创建tcp套接字 tcp_socket =
socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 链接服务器 #
tcp_socket.connect(("192.168.2.101", 8080)) server_ip = input("请输入要链接的服务器的ip:")
server_port = int(input("请输入要链接的服务器的port:")) server_addr = (server_ip,
server_port) tcp_socket.connect(server_addr) # 3. 发送数据/接收数据 send_data =
input("请输入要发送的数据:") tcp_socket.send(send_data.encode("utf-8")) # 4. 关闭套接字
tcp_socket.close() if __name__ =="__main__": main()
输出结果:

控制台:

服务器端: 

<>

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信