文章目录:
1.网络基础
(1)宏观概括
电脑主机通过网络适配器连接到网络,网络适配器+网络可抽象为与磁盘控制器+磁盘类似的i/o设备。网络传来的数据通过适配器,i/o总线等复制到内存,等待cpu的处理,同样可以将主机的数据发送到网络中。
实际工作中采用4层网络模型,自顶向下依次为网络接口层(对应OSI模型的物理层+链路层,适配器和物理链路),网际层(IP层),传输层(TCP/UDP),应用层。
客户端主机给服务器主机发送一次信息的整个过程:
1)客户端主机运行程序,遇到套接字接口陷入内核(套接字原理及接口见下文)。
2)内核运行协议软件,将信息封装,加上IP分组头部和MAC帧头部(网络通信中只可见网络模型的下三层)。
3)将封好的数据包从内存复制到网络适配器中,再通过网络适配器转发到网络中。
4)路由器根据IP分组头部的ip地址,进行路由选择和分组转发,转发到对应网络中。 交换机/网桥根据帧首部mac地址,在同一局域网内进行数据转发。
5)网络适配器接收到网络上发来的数据,产生硬件中断,根据中断号执行相应的操作即运行协议软件对数据进行解包,根据端口号将数据发送到相应的进程。
(2)协议
1).ARP协议
用途:已知IP地址获取mac地址,用于之后携带信息的报文在局域网内进行转发。
工作原理:
网络适配器欲将信息发送到网络中:
①先检查ARP高速缓存中是否有ip所对应的mac地址信息,若无在局域网内广播arp请求报文。
②路由器接收该帧,若发现发送IP地址与目标IP地址在一个网络内则丢弃,否则将自己的mac地址放入ARP回答报文中回传给请求者。
③局域网内其他主机适配器收到帧,验证目标IP地址,若为发送给自己的帧则收下,发送ARP回答报文,否则丢弃。
报文格式:
ARP请求报文:以太网目标地址为FF-FF-FF-FF-FF-FF(用于广播),目标硬件地址为00-00-00-00-00-00,其他项依次正常填入。
ARP回答报文:根据请求报文中的地址信息,以单播的方式将硬件地址信息传给请求者。
wireshark协议分析:
2)IP协议
用途:用于异构网络互联。
报文格式:
wireshark协议分析:
ipv4
1.协议类型:ipv4——4
2.首部长度:以4字节为单位。
3.服务类型
4.IP报文总长度:以1字节单位。
5.标识:用于分片拼装
6.标志(前三位):第一位为 0,未使用。
第二位DF:1为不许分片,0为允许分片
第三位MF:DF为0时才有意义,MF=1时表示该序号之后还有分片,MF=0表示此片为最后一个分片。
片偏移(后十三位):表示分片序号,以8字节为单位。
7.生存时间:每通过一个路由器减一,减为零则丢弃。
8.ip报文所承载报文类型:tcp——6 udp——17 icmp——
9.头部校验和:只校验首部。
10.源IP地址
11.目的ip地址
ipv6
3)TCP协议
用途:实现复用分用,流量控制,确认,拥塞控制等。
工作原理:
1.tcp三次握手建立连接:
为什么必须是三次握手:
如果是两次握手,考虑这样一种情况:主机1向主机2第一次发建立连接请求,由于链路较差,主机1未在定时器时间内未收到确认再次发起新的建立连接请求,主机2收到了新的请求,并回复确认成功建立了链接1。此时第一次也到达了主机2,主机2也会发送确认信号,又建立了一条连接2。主机1会通过连接1发送数据,发送后断开该链接,而连接2会一直存在,造成资源的浪费。
2.tcp四次挥手断开连接:
报文格式
wireshark协议解析:
与arp,ip类似与报文格式一一对应即可。
①端口号用于复用和分用
常用端口号为0~1023
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | |
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
② 序列号与确认号用于确认机制,确认机制和超时重传,保证可靠传输。
③ 窗口大小用于流量控制。
4)UDP协议
用途:实现分用复用,数据差错校验(不可靠传输,延时小)。
报文格式:
wireshark协议分析:
2.编程接口