tcp编程

来源:互联网 发布:pc视频编辑软件 编辑:程序博客网 时间:2024/05/21 17:30
******tcp连接属于三次握手*****
SYN 用于向对方发起连接请求的标志,规定带syn标志的数据包占一个字节的编号。J是顺序号,
ACK 是用于应答的标志,规定除了第一次的SYN请求的数据包没有ACK,后面所有的数据包都带有ACK应答标志。发送J+1。
J+1 = 5 ,J+6..
三次目的:为了防止服务器被恶意请求。
数据传输:两次连接

**四次挥手**断开连接属于四次链接,FIN用于断开连接标志,规定带FIN标志的数据包占一个字节编号

MSL**Maximum segment Lifetime  最大的数据生存时间。

*****重点****TCP服务端流程,TCP客户端流程**********

tcp --传输控制协议,面向连接的,可靠的,基于字节流的传输层通信协议。(应答机制,超时长传机制,字节流有编号)
connect()---发起连接请求
accept()---接起连接请求
-----------------------------服务器端---------------------
1.创建socket,流式套接字,tcp协议.
listen_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 设置允许复用地址  #(socket层属性,重用地址,允许)
listen_socket.setsockopt(socket.SOL_SOCKET, scoket.SO_REUSEADDR,1)
2.绑定地址(ip,port)
my_addr=('192.168.138.127', 10000)
lisetn_socket.bind(my_addr)
3.设为监听状态listen()
listen_socket.listen(128) #backlog参数用来缓存客户端连接请求的队列长度
print('listending....') #进入监听状态
4.等待链接请求accept()
while True:
     ret,new_addr = listen_socket.accpet()
     print(ret)
     print(new_addr)
#服务器收数据

     rew =ret.recv(1024)  #对方关闭,recv不会阻塞,返回空字符串
     ret.recv(1024).close()
listen_socket.close()
---------------------------客户端流程------------------------
def main():
  #1. ---创建socket
 tcp_socket =socket.socket(socket,AF_INET,socket.SCK_STREAM)