python网络编程-TCP/IP

[复制链接]
发表于 2026-2-24 02:40:18 | 显示全部楼层 |阅读模式
链路层

帧构成(按序次):
目标MAC:6B
源MAC:6B
范例:2B
数据:46B-1500B
CRC:4B
此中,源MAC为主机网卡所在,范例为泉源网络层的数据范例,ipv4为0800,arp为0806,pppoe为8864,1qtag为8100,ipv6为86dd
python可以通过uuid模块获取到本机mac所在

网络层

数据报结构

首部:20-60B,此中前20B必选项,后40B可选项
数据:0-65516B
首部结构

版本:4位,表现ipv4还是ipv6
ihl:4位,表现首部长度,单元位4B,以是最大为4x15=60B,刚好是首部最大长度
ds:区分服务,8位,前三位表现优先级,接下来四位表现最小时延,最大吞吐量,最高可靠性和最小代价,末了一位未利用
总长度:16位,表现首部和数据总长度,单元为B。注意到链路层数据长度为46-1500,当网络层数据报不敷46B时会增补数据,凌驾1500时会切片
标识:16位,表现分片数据的唯一id
标记:3位,最高位为预留位,第二位表现是否可分片,0表现可分片,1表现不可分片,末了一位表现此数据报是否为分片,0表现非分片,且是末了一个分片,1表现分片,且背面另有分片
分片位移:13位,8B
生存时间,8位,最大255,表现路由最大跳数
协议:8位,表ip数据报范例,如ICMP,IGMP,TCP,UDP等
首部校验和:16位
源ip所在和目标ip所在,各32位
python获取网络信息可通过psutil和netifaces两个模块去获取,此中netifaces版本废弃了,可以安装netifacce2

传输层

udp

不包管数据可达
报头8B:源端口2B,目标端口2B,长度2B,校验和2B
数据0-65527B
TCP

创建毗连3次握手,关闭毗连4次握手
数据报结构

首部20-60B
数据0-65535B
首部结构

源端口16位
目标端口16位
序号:32位:每个字节的数据都有序号,到pow(2,32)后从0开始
确认号:32位,吸取方发给发送方,盼望收到下一个数据报文第一个字节的序号,比如发送方发了0-999字节,吸取方发简直认号就是1000
数据偏移:4位,单元位4B,类似ipv4报头的ihl
保存:6位,一样寻常为0
URG:1位,1表现告急数据,告急指针有用
ACK:1位,为1表现确认号字段有用
PSH:1位,1表现报文被创建并立刻发出去,吸取端收到后会立刻交给进程,而不是放缓存中等缓存满了才递交
RST:1位,为1表现当前毗连出现严肃题目,徐奥开释毗连并重新创建毗连,RST为1还可用于拒绝担当非法报文或拒绝打开非法毗连
SYN:1位,为1表现报文为毗连哀求或毗连担当报文
FIN:1位,为1表现数据发送完毕并要求开释毗连
窗口:16位,由吸取方发给发送方,表现渴望担当下个报文的长度
校验和:16位
告急指针:16位,URG为1时指出告急数据竣事位置
python获取网络信息

psutil可以获取网络一些统计信息,net_io_counters方法默认网络整机的网络统计信息,入参pernic=True会单独网络每个网卡的统计信息


应用层

http

http默认是无状态通讯,可以通过cookie举行有状态的服务
http端口一样寻常为80
报文结构

哀求报文:方法,url,版本,其他首部字段,报文实体(可选)
应答报文:版本,状态码,短语,其他首部字段,报文实体(可选)
方法:有8种,get,post,head,put,delete,option,connect,trace
版本:http版本号
其他首部字段:比如Cache-Control, Accept-Encoding等
报文实体:长度不限,可以为0
状态码:即404这种,三位数。1xx表现服务器收到了哀求,2xx表现服务器担当客户端哀求,3xx表现服务器对客户端哀求重定向,4xx表现客户端哀求有误,5xx表现服务端有题目
短语:对状态码的解释,比如202返回码对应的短语是Accept,404对应的短语是Not Fount
https

http没有安全包管,可以被抓包,https利用ssl或tls对数据报文加密后tcp传输,默认端口443
一样寻常会利用对称加密和非对称加密,对称加密一样寻常用于报文加密,非对称加密一样寻常用于暗码加密
哀求流程

客户端哀求时会将自己支持的一套加密规则发给服务器
服务器根据客户端加密规则组合出一组加密和hash算法,连同自己的身份信息,以数字证书情势返回给客户端
客户端验证服务器证书合法性,通事后天生一串随机数暗码,并用服务器公钥对这个随机数暗码加密。客户端对要发送的消息盘算hash,用随机数暗码对要发送的消息和消息的hash值举行加密,末了将服务器公钥加密的随机数暗码,用随机数暗码加密的消息和消息是hash一起返回给服务器
服务端收到客户端数据后,用自己的私钥揭密处随机数暗码,然后用随机数暗码解密消息和消息hash值,对比解密出的hash值和收到消息的hash值是否同等。若同等,则客户端和服务端毗连创建乐成,今后,两边利用随机数暗码对数据举行加解密。后续数据传输过程中,如果堕落或hash差异等则毗连自动停止
ftp

dns

snmp

snmp简单邮件传输协议,用于将邮件从源所在传送到目标所在,端口一样寻常为25
是常用的邮件发送协议,发邮件后,邮件会发到snmp服务器上
pop3

收信方用来从自己服务器上担当其他用户发给自己的邮件,端口一样寻常110
pop3是离线协议,用户登录时会一次性将pop3服务器的邮件下载到当地,同时服务器的邮件都删掉自动
imap是在线的收信协议,增补了pop3离线的题目,是现在最常用的邮件担当协议,端口一样寻常143
dhcp

有dhcp的客户端毗连网络时,会广播dhcp disocover报文,按肯定规则举行有限次次数广播后如果未收到相应则dhcp失败
服务器收到报文后会从可用所在池挑一个ip,广播情势发送dhcp offer报文把这个ip返回给客户端
客户端收到dhcp服务器分配的ip后,会发送一个arp哀求看这个ip有没有被占用,如果被占用了则客户端发送dhcp decline报给dhcp服务器,如果没被占用则发送dhcp request给服务器,服务器收到后会给客户端发送一个dhcp ack相应,至此一个dhcp服务流程竣事
dhcp服务端端口一样寻常67,dhcp客户端端口一样寻常68.dhcp利用udp通讯

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表