标签:文件传输 accept 拥塞控制 服务 多对一 from src 时延 toc
目录
4.1.1 背景概念
4.1.2 socket 概念特性
4.1.3 TCP_socket
4.1.4 UDP_socket
4.1.5 其他补充方法
4.1.1 背景概念
脑图结构
OSI 模型
4.1.2 socket 概念特性
脑图结构
理解示意图
额外补充
Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。
在设计模式中, Socket其实就是一个门面模式
它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。
4.1.3 TCP_socket
server
import socket sk = socket.socket() sk.bind((‘127.0.0.1‘,8898)) # 把地址绑定到套接字 sk.listen() # 监听链接 conn,addr = sk.accept() # 接受客户端链接 ret = conn.recv(1024) # 接收客户端信息 print(ret) # 打印客户端信息 conn.send(b‘hi‘) # 向客户端发送信息 conn.close() # 关闭客户端套接字 sk.close() # 关闭服务器套接字(可选)
client
import socket sk = socket.socket() # 创建客户套接字 sk.connect((‘127.0.0.1‘,8898)) # 尝试连接服务器 sk.send(b‘hello!‘) ret = sk.recv(1024) # 对话(发送/接收) print(ret) sk.close() # 关闭客户套接字
特性
粘包
额外补充
TCP (Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。
使用TCP的应用:Web浏览器;电子邮件、文件传输程序。
4.1.4 UDP_socket
server
import socket udp_sk = socket.socket(type=socket.SOCK_DGRAM) #创建一个服务器的套接字 udp_sk.bind((‘127.0.0.1‘,9000)) #绑定服务器套接字 msg,addr = udp_sk.recvfrom(1024) print(msg) udp_sk.sendto(b‘hi‘,addr) # 对话(接收与发送) udp_sk.close() # 关闭服务器套接字
client
import socket ip_port=(‘127.0.0.1‘,9000) udp_sk=socket.socket(type=socket.SOCK_DGRAM) udp_sk.sendto(b‘hello‘,ip_port) back_msg,addr=udp_sk.recvfrom(1024) print(back_msg.decode(‘utf-8‘),addr)
额外补充
UDP (User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。
使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。
4.1.5 其他补充方法
标签:文件传输 accept 拥塞控制 服务 多对一 from src 时延 toc
原文地址:https://www.cnblogs.com/shijieli/p/10339969.html