TCP协议
点对点
面向连接,可靠,字节流
可靠传输
应答机制
超时重传
差错检验
流量控制,阻塞管理
tcp socket 步骤
client:
1,socket()
2,connet()
3,send()
4,recv()阻塞,只要套接字关闭了,recv就解阻塞,返回长度为0
5,close()
socket.setsockopt(套接字(SOL_SOCKET),选项,True)
server
1,socket()
2,bind()
3,listen(num):主动改为被动,被动只能接受客户端连接请求,不能收发消息,设置最大的等待数
4,socket,ip:port= accpet(). 在这阻塞,等待客户端请求
5,recv()阻塞,只要套接字关闭了,recv就解阻塞,返回长度为0
6,send()
7,close() 关闭两个,一个是server的套接字,另一个是server为了响应accpet创建的套接字
TCP三次握手,四次挥手
三次握手
建立连接connect 底层三次握手
SYN = 1 :连接请求 ACK =1: 连接确认
FIN 关闭连接 seq报文序号 ack确认序号
client->server SYN =1,seq = j(随机数)
server->client SYN =1 ,ACK =1, ack =j+1, seq =K
client->server ACK =1 ,ack =K+1
三次的确认握手?
TCP过程
四次挥手
client->server: FIN M
server->client:ACK M+1
server->client:FIN N
client->server:ACK N+1
除此之外,还有最后client在2msl内没有再收到server的bin,就结束,这样才能保证到server收到client的ack
为什么四次挥手:因为发送应答机制,超时重传,保证速度必须马上传回ACK;但是第二次挥手完,服务端没有结束到close(),所以先回一个ack到结束了,再发一个fin;
而在三次握手中,server在listen时候是没有别的要完成,已经准备好了
os模块
os.path.exists()