tcp协议以及soket

1.tcp

tcp协议是在传输层中


tcp协议的三次握手与四次挥手

\color{blue}{状态与过程分析:}
三次握手:
1.客户端向服务端发送连接服务端的请求
2.服务端回应请求,并发送连接客户端的请求(客户端向服务端通道建立)
3.客户端回应(服务端向客户端的通道建立)

SYN_SENT(状态):向服务端发送连接请求
      SYNseq=x:SYN表示发送连接请求,x表示请求的标记
LISTEN(状态):等待接收请求
SYN_RCVD(状态):接收到请求以后,状态由LISTEN变为SYN_RCVD,
      ACK=x+1:回复SYNseq=x的请求
      SYNseq=y:发送请求连接,y作为标记
ESTABLISHED:服务端向客户端连接成功
    ACK=y+1:回复y请求
ESTABLISHED:客户端向服务端连接成功

四次挥手:
1.客户端先传完数据,向服务端发送关闭连接请求
2.服务端回应请求(客户端向服务端通道关闭)
3.服务端传完数据以后向客户端发送关闭连接请求
4.客户端回应请求(服务端向客户端的通道关闭)

2.soket

2.1

\color{blue}{服务端:}

import soket #导入包
#1.创建服务器scoket对象
phone=socket.socket(soccket.AF_INET,socket.SOCK_STREAM)

#2.设置服务器地址
phone.bind(('127.0.0.1',8080))

#设置连接管理列队(半连接池)
phone.listen(5)

#建立客户端服务连接
conn,client_addr=phone.accept()
#conn:双向连接对象,可以收发消息
#client:存放IP和端口的小元组

#5.收发数据
data=conn.recv(1024)#设置接收的最大字节数bytes为1024 ,data用来装收到的消息
conn.send(data.upper())#将收到的字符转为大写发出去

#6.断开客户端
conn.close()

#7.关闭服务器(这一步一般永远都不会执行)
phone.close()

\color{blue}{客户端:}

import soket #导入包

#1.创建客户端socket对象
phone=socket.socket(soccket.AF_INET,socket.SOCK_STREAM)

#2.连接服务器地址
phone.connect(('127.0.0.1',8080))

#3.发\收数据
phone.send('hello'.encode('utf-8')) # 只能发bytes类型
data=phone.recv(1024)
print('收到服务端的消息: ',data.decode('utf-8'))

#4.关闭客户端
phone.close()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。