一、传输层**
该层为两台主机上的应用程序提供端到端的通信。传输层有两个传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。其中,TCP是一个可靠的面向连接的协议,udp是不可靠的或者说无连接的协议。
二、TCP的特点:
TCP是面向运输层的协议。使用TCP协议之前,必须先建立TCP连接,在传输完成后,必须释放已经建立的TCP连接。
每条TCP连接只能有两个端,每一条TCP连接只能是点对点的。
TCP提供可靠的交付的服务。通过TCP连接传输的数据,无差错、不丢失、不重复,并且按序到达。
TCP提供全双工通信。TCP通信允许通信双发的任何时候都能发送数据。
TCP面向字节流。
三、TCP的连接
每一条TCP连接都有两个端点,TCP连接的端点叫做套接字(socket)或 插口。
套接字(socket)=(IP地址:端口号)
每一条TCP连接唯一的被通信两端的端点(即两个套接字)所确定,即:TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}
代码端
服务端
import socket
import threading
client_flag=0 #定义一个标志位
def client1(socket_tcp_server): #采用了多线程
global client_flag #声明该变量可以在该方法使用
# accept等待客户端连接
# 如果有新的客户来连接服务器,那么就产生一个新的套接字连接客户端服务
# new_client_socket用来为这个客户端服务
# socket_tcp_server就可以省下专门等待其他客户连接
new_client_socket, client_addr = socket_tcp_server.accept() #当服务器得到客户端请求连接时,client_flag=1
client_flag=1
print("客户端连接成功",client_addr)
while True:
# 接收数据
recv_date = new_client_socket.recv(1024) # 当客户端断开连接时,recv_date的值为空
if recv_date: #使服务器能一直收到信息,只有客户端断开时,才退出循环