Tcp 协议 简介及客户端和服务端的创建

Tcp

Tcp 协议 简介及客户端和服务端的创建_第1张图片

简介

传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。用户数据报协议(UDP)是同一层内另一个重要的传输协议。

运作方式

TCP协议的运行可划分为三个阶段:连接创建(connection establishment)、数据传送(data transfer)和连接终止(connection termination)。操作系统将TCP连接抽象为套接字表示的本地端点(local end-point),作为编程接口给程序使用。在TCP连接的生命期内,本地端点要经历一系列的状态改变。

Tcp的创建

Tcp 协议 简介及客户端和服务端的创建_第2张图片
1.客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数A。
2.服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK的确认码应为A+1,SYN/ACK包本身又有一个随机产生的序号B。
3.最后,客户端再发送一个ACK。此时包的序号被设定为A+1,而ACK的确认码则为B+1。当服务端收到这个ACK的时候,就完成了三次握手,并进入了连接创建状态。

Tcp的终结

Tcp 协议 简介及客户端和服务端的创建_第3张图片
连接终止使用了四路握手过程(或称四次握手,four-way handshake),在这个过程中连接的每一侧都独立地被终止。当一个端点要停止它这一侧的连接,就向对侧发送FIN,对侧回复ACK表示确认。因此,拆掉一侧的连接过程需要一对FIN和ACK,分别由两侧端点发出。

Tcp客户端和服务端的开发流程:

	tcp 客户端开发流程:
	1. 导包 
		socket
	2. 创建socket对象
		socket.socket(socket.AF_INET, socket.SOCK_STREAM)3. 连接服务端
		connent(("服务器ip",端口))
	4. 发送数据
		send('数据'.encode())
	5. 接收数据
		recv(1024).decode()
	6. 关闭连接
		close()

tcp服务端开发流程:
	1. 导包 
		socket
	2. 创建socket对象
		socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	3. 绑定信息
		bind(("服务器ip",端口))
	4. 设置监听
		listen(最大待连接数)  # 一旦设置了监听,那么该socket对象就不可以主动连接和收发信息
	5. 接收请求
		客户端socket对象, ip信息 = accept()

	6. 接收数据
		客户端socket.recv(1024).decode()

	7. 发送数据
		客户端socket.send(data.encode())
	8. 关闭连接
		close()

你可能感兴趣的:(Tcp 协议 简介及客户端和服务端的创建)