python笔记28(TCP,UDP,socket协议)
程序员文章站
2022-07-06 13:00:40
今日内容 1、TCP协议 协议的特点:三次握手,四次挥手; 2、UDP协议 3、OSI七层模型:每层的物理设备,每一层协议。 4、代码部分: ①介绍socket; ②使用socket完成tcp协议的web通信; ③使用socket完成udp协议的web通信。 1、TCP协议 2、UDP协议 3、OS ......
今日内容
1、tcp协议
协议的特点:三次握手,四次挥手;
2、udp协议
3、osi七层模型:每层的物理设备,每一层协议。
4、代码部分:
①介绍socket;
②使用socket完成tcp协议的web通信;
③使用socket完成udp协议的web通信。
1、tcp协议
1、可靠,慢,全双工通信 2、建立连接的时候,三次握手 3、断开连接的时候,四次挥手 4、在建立起连接后 发送的每条信息都有回执 为了保证数据的完整性,还有重传机制 5、长连接:会一直占用双方的端口 6、i/o操作(input,output),输入输出相对内存来说的。 write,send:输出 output read,recv:输入input 能够传输的数据没有限制
2、udp协议
1、无连接的,速度快 2、可能会丢消息 能够传输的数据长度有限的,是根据数据传输设备设置有关(mtu) 应用场景: tcp:文件的上传,下载(邮件,网盘,缓存电影) udp:即时通信(qq,微信)
3、osi7层模型
应用层 :http,https,ftp,smtp 表示层 会话层 #应用层(开发角度,五层协议)--》代码 传输层,tcp,udp 网络层,ipv4,ipv6 (路由器) 数据链路层,mac,arp(网卡,交换机) 物理层
4、抽象层
socket 中文名:套接字 python socket模块 完成socket的功能 工作在应用层和传输层 之间的抽象层 帮助我们完成了所有信息的组织和拼接 socket对于程序员来说,已经是网络操作的底层了。 socket历史 同一台机器上的两个服务之间的通信 基于文件 基于网络的多态机器之间的多个服务通信 tcp协议: ########### server端: import socket sk=socket.socket() sk.bind(('127.0.0.1',9000)) sk.listen() print('*'*20) conn,addr=sk.accept() while true: msg=conn.recv(1024).decode('utf-8') if msg.upper()=='q':break print(msg) ipn=input(">>>") conn.send(ipn.encode('utf-8')) if ipn.upper()=='q':break conn.close() sk.close() ################ client端: import socket sk=socket.socket() sk.connect(('127.0.0.1',9000)) while true: ipn=input(">>>") sk.send(ipn.encode('utf-8')) if ipn.upper()=='q':break msg=sk.recv(1024).decode('utf-8') if msg.upper() == 'q': break print(msg) sk.close() ======================== udp协议: server: import socket sk=socket.socket(type=socket.sock_dgram) sk.bind(('127.0.0.1',9000)) while true: msg,client_addr=sk.recvfrom(1024) print(msg.decode('utf-8')) msg=input(">>>").encode('utf-8') sk.sendto(msg,client_addr) sk.close() client: import socket sk=socket.socket(type=socket.sock_dgram) while true: inp=input('>>>').encode('utf-8') sk.sendto(inp,('127.0.0.1',9000)) ret=sk.recv(1024) print(ret) sk.close()
推荐阅读