12.1. 相关概念
OSI七层模型:开放系统互连参考模型,包含物理层、数据链路层、网络层、传输层、会话层、表示层和应用层

TCP/IP:在OSI七层模型的基础进行简化抽象出来的广泛使用的网络协议簇TCP协议(传输控制协议):- 完成
OSI模型中的第四层传输层指定的功能 - 有链接的,数据是安全的(有保障)
 - 传输的速度相对较慢,三次握手、四次挥手、数据检查
 
- 完成
 UDP(用户数据报协议):- 无连接的,数据是不可靠的
 - 传输速度相对较快
 

http请求的结构及详细解释可以查看程序猿必须要了解的HTTP协议,今天总结了一份关于HTTP请求的结构与具体内容http响应的结构及详细解释可以查看程序猿必须要了解的HTTP协议,总结了一份关于HTTP响应的结构及详细解释
12.2. TCP编程
Socket是网络编程的一个抽象概念。通常我们用一个Socket表示打开了一个网络链接,而打开一个Socket需要直到目标计算机的IP地址和端口号,再指定协议类型即可。
TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。

客户端:大多数连接都是可靠的
TCP连接,创建TCP连接时,主动发起连接的叫客户端。服务端:绑定一个端口并监听来自其他客户端的连接。如果某个客户端连接过来了,服务器就与该客户端建立Socket连接,随后的通信就靠这个Socket连接了。
skt = socket.soket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None):family表示协议簇,socket.AF_INET表示IPv4,socket.AF_INET6表示IPv6;type表示传输协议,socket.SOCK_STREAM表示TCP,socket.SOCK_DGRAM表示UDPskt.connect(address):向服务器发出请求,address表示(主机/域名, 端口)的一个元组skt.send():发送请求报文,常见的内容b'GET / HTTP/1.1\r\nHost: www.baodu.com\r\nConnection: close\r\n\r\n'skt.recv():接收服务器的数据,字节类型,需要decode解码skt.bind():绑定主机和端口,接收一个元组类型的数据skt.listen():服务端监听服务skt.accept():服务端等待阻塞,一旦有客户请求数据,便创建新的套接字进行通讯,同时可以获取客户的请求地址skt.close():关闭套接字
使用
tcp模拟客户端连接百度服务器
1  | # tcp-http模拟(tcp传输层, http应用层)  | 
使用tcp创建soket服务
1  | import socket  | 
使用tcp模拟客户端
1  | import socket  | 
12.3. UDP编程
UDP是面向无连接的协议,使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。

skt.sendto():发送UDP数据skt.bind():绑定主机和端口skt.recvfrom():接收UDP数据skt.close():关闭Socket连接
采用
UDP模拟飞秋发送消息
1  | import socket  | 
UDP协议创建服务端
1  | import socket  | 
UDP协议创建客户端
1  | import socket  | 
- 本文作者: Lajos
 - 本文链接: https://www.lajos.top/2020/05/12/No-12-Python语言基础-网络编程/
 - 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
 
		