ISO推出OSI协议,七层:物理层,数据链路层,网络层,传输层,回话层,表示层,应用层。
TCP/IP参考ISO/OSI
应用层 | HTTP,FTP,DNS,NFS,... |
传输层 | TCP,UDP(协议较少) |
网络层 | IP,ARP,RARP,ICMP,IGMP(协议较少) |
链路层 | Ethernet,Token Ring,FDDI,... |
1.链路层
包括网络接口卡以及驱动程序,主要处理物理接口细节。
目标MAC地址(6B) | 源MAC地址(6B) | 类型(2B) | 数据(46~1500B) | CRC(4B) |
2.网络层
负责获取和维护主机的IP地址
IPv4地址=网络地址+主机地址
网络地址=IPv4地址&子网掩码
二进制全为0与全为1不能作为网络或者主机部分的地址
IPv4地址类型
类型 | 第一个字节 | 网络地址长度 | 主机地址长度 | 子网掩码 | |
二进制形式 | 十进制 | ||||
A | 0xxxxxxx | 0~127 | 8 | 24 | 255.0.0.0 |
B | 10xxxxxx | 128~191 | 16 | 16 | 255.255.0.0 |
C | 110xxxxx | 192~223 | 24 | 8 | 255.255.255.0 |
D(用于组播通信) | 1110xxxx | 224~239 | |||
E(保留地址,用于实验) | 1111xxxx | 240~255 |
地址 | 说明 |
10.0.0.0/8 | 私网地址,只可用于局域网。配合NAT技术用于 扩展IPv4地址 |
172.16.0.0/12 | |
192.168.0.0/16 | |
169.254.0.0/16 | |
127.0.0.0/8 | Loopback地址,测试本机网络功能 |
224.0.0.0/4 | IP组播地址 |
240.0.0.0/4 | |
255.255.255.255 | 广播地址 |
IPv6表示方式:1.冒分十六进制表示法 2.0位压缩表示法 3.内嵌IPv4地址表示法
ARP协议:地址解析协议。将网络层的IP地址对应到链路层的网卡MAC地址
RARP协议:反向地址解析协议。局域网获取IP地址
ICMP协议:主机与路由之间传递消息
IGMP协议:管理组播组成员的加入和离开
3.传输层
为了区分多个进程,引入端口号来标记不同的进程。
端口号=服务器端口号+客户端端口号
服务器端口号=熟知端口号+登记端口号
网络层的IP定位到主机,端口号定位到进程。
UDP:适用于一次传输少量数据和偶尔出现错误对结果影响不大的服务
源端口 | 目标端口 | 长度 | 校验和 | 数据 |
TCP:三次握手建立连接,四次挥手断开连接。
4.应用层
HTTP:用于传输HTML数据。互联网中的主机都可以用HTML交互。
HTTPS:加密
FTP:文件的传输和共享。下载和上传
DNS:互联网域名解析服务
SMTP:简单邮件传输协议
POP3:邮局协议版本3,用于收信方获取邮件。离线式协议。
DHCP:动态主机配置协议。动态分配IP地址
python 用到的包
获取本机网卡MAC地址:uuid psutil
获取IP地址:psutil
获取局域网网关:netifaces
获取主机收发数据的统计信息:psutil
获取指定服务器端的HTTP响应报文:urllib