1.传输模型
基本模型
每一个应用程序客户端要实现数据传输,都需要套接字去发送或者响应网络请求,客户端通过套接字,沿着网络设备将数据发送给其他客户端,相应客户端解析并接收数据。
层次划分
各层说明 | OSI七层网络模型 | TCP/IP四层网络模型 | 对应协议 |
供操作系统或应用进行网络通信的标准接口 | 应用层 | 应用层 | Telnet、FTP、SMTP、DNS、HTTP |
将不同的编码方式转换成网络通信中采用的标准表现形式 | 表示层 | ||
不同PC不同进程间建立或解除连接,插入同步点 | 会话层 | ||
两个主机间端对端的数据连接与传输 | 传输层 | 传输层 | TCP、UDP |
选择路由并正确的找着目标主机 | 网络层 | 网络层 | IP、ARP、RARP、ICMP |
两个相邻节点间准确的数据传输 | 数据链路层 | 数据链路层 | 网络通信硬件及接口 |
原始比特数据在物理介质上的传输 | 物理层 |
- OSI(Open System Interconnect)开放系统互连参考模型七层协议模型,是一个理想化的网络互连参考模型,但基本不使用,
现使用的是TCP/IP四层网络模型
- TCP和UDP的区别是前者是可靠的的网络互联协议,而后者不可靠
- ARP指的是根据IP地址获取MAC(网络设备的物理地址,硬件地址,每台电脑中均装有网卡,其地址为MAC地址)
- RARP为根据MAC地址获取IP地址
传输层说明
- Python是在应用层的HTTP协议之上进行开发
- 网络编程,主要是了解Python能编写的最低的层次即传输层的基本情况
- HTTP协议是基于TCP之上的,因此需要了解TCP连接的基本过程
2.TCP连接
即建立连接(三次握手),数据传输和断开连接(四次挥手)
建立连接(三次握手)
- 首先由客户端发起同步请求(SYN),即想建立连接,服务端处于监听状态,可接收客户端的请求。
- 服务端收到同步请求,发送应答信号(ACK)给客户端。
- 客户端接收应答信号,已建立连接并发送已建立连接的应答信号给服务端,连接建立完毕。
以上即为三次握手
数据传输
客户端发送数据传输请求,操作系统接受请求并接收数据,发送数据给相应客户端,客户端接收数据并发送响应信号,客户端接收。
断开连接(四次挥手)
- 客户端主动请求断开连接,发送结束信号(FIN),客户端等待关闭
- 服务端接收FIN信号,响应请求,发送ACK信号,第一阶段完成(客户端已无数据发送给服务端,但服务端可能还有数据发送给客户端, 故还有后续过程)
- 服务端被动关闭,发送FIN信号,等待客户端确认
- 客户端发送ACK,等待服务端关闭,服务端接收信号,关闭连接,客户端关闭连接
以上即为四次挥手
3.IP地址与端口
IP地址
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。即为每一台计算机编号,以便于在网络中定位到一台计算机的位置。
127.0.0.1:回环地址。该地址指电脑本身,主要预留测试本机的TCP/IP协议是否正常。只要使用这个地址发送数据,则数据包不会出现 在网络传输过程中。
0.0.0.1:代表的是本机所有ip地址,不管你有多少个网口,多少个ip,如果监听本机的0.0.0.0上的端口,就等于监听机器上的所有ip端 口。换句话说,就是只要数据报目的地址是你机器上的一个ip地址,那么就能被接受。
IP地址分类
- A类地址:网络号占1个字节。网络号的第一位固定为0。主机号占3字节。
- B类地址:网络号占2个字节。网络号的前两位固定为10。主机号占2字节。
- C类地址:网络号占3个字节。网络号的前三位固定位110。主机号占1字节。
- D类地址:前四位是1110,用于多点广播(Multicasting),寻址一组计算机。组播地址占4字节。
- E类地址:前四位是1111,保留为以后使用。
端口号
数据传输,发送与接收必须通过端口,指明了数据应发送的进程编号。每个进程都有一个端口号,以此来作为数据传输的门户。
数据传输的流程便是现寻找IP地址,后寻找端口号,进行数据传输。