课程回顾:
两台主机如何进行通讯
常见网络设备
OSI7层模型
封装与解封装
1.TCP/IP模型:网路层协议:
应用层:
用层协议:telnet(23),ssh(22)
TELNET:远程链接协议(http)
FTP:上传下载协议(smtp)
TFTP: 简单文件协议(无密码)(nfs)
SNMP:简单网络管理协议(如:dhcp)
DHCP:动态主机分配协议
DHCP协议原理过程:
应用层 主机要主机层 因特网层 网络接入层
应用层协议:
>01.客户端主机发出广播信息,请求获取IP地址
>02.服务端从地址池里取出一个IP地址分配给客户端(192.168.1.1-192.168.1.250)
>03.客户端返回确认信息。
>04.服务端从地址池把已经分配的地址从地址池中删除,避免被他人使用
>05.客户端可以在一定时间内使用分配的地址
TCP/UDP 协议(传输控制协议):
主机层协议:
TCP: 文件传输控制协议 属于面向连接的网络协议-----在线传输文件,可靠文件传输,传输效率低
UDP: 用户报文协议 属于无连接的网络协议----离线传输协议,效率高,传输数据不可靠
TCP/UDP协议对比:
传输控制协议(TCP) | 用户数据协议(UDP) |
面向连接 | 无连接 |
可靠传输 | 不可靠传输 |
流量控制 | 尽力而为,尽力传递 |
使用TCP应用: web浏览器,电子邮件 | UDP应用: 域名系统(DNS);视屏流; IP语音(VoIP) |
UDP随机端口配置:
控制字段ACK/SYN
ACK表示控制字段,确认数据是否接收,控制字段1为有效,为0表示失效
SYN表示请求建立连接字段 ,控制字段1为有效,为0表示失效
FIN表示断开连接,控制字段1为有效,为0表示失效
TCP三次握手原理图
主动: SYN请求建立连接,syn=1 seq=100
被动方: ACK发出确认号,ack=100,syn=1,ACK=101
SYN确认ack1:ack=101syn=1,seq=101
被动方:确认
SYN确认ack1: syn=1,seq=102
ACK确认号,ack=102,syn=1,ACK=101
确认ack-1确认seq=102
TCP/四次挥手
tcpdump 命令
tcpdump -i eth0 -nn -X -c 5 "port 53" ##抓取53端口的包
tcpdump -i eth0 -nn -X -c 5 "port 53" -w /tmp/oldboy.pkg ##保存到文件
-n : 转换域名转为IP
-X : 输出包的头部数据,会以16进制和ASCII两种方式同时输出
-XX: 输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
显示TCP 11 种 状态集 (参考:https://blog.csdn.net/bestone0213/article/details/44872529)
服务器启动时创建了一个 soket条目 对应了:客户端tcp IP地址 网关:随机端口
源协议: 源IP地址 源端口号 目标地址: 目标端口
tcp 10.0.0.1 0 :22 10.0.0.1 : 22
11种状态集图片解释:
![](https://images2018.cnblogs.com/blog/1362790/201804/1362790-20180426200405693-1814790312.png)
11种状态: 任何状态都不能出现过多,否则会影响网络链接
四次挥手过程为什么不能变为三次?
网络报文结构:
Source Port Number (16 bits) 利用随机端口号 | Destination Port Number (16 bits) 80 22 23 | ||||||||||||||||||||||||||||||
0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
Sequence Number(重点) (32 bits) | |||||||||||||||||||||||||||||||
4 | 5 | 6 | 7 | ||||||||||||||||||||||||||||
Acknowledgement Number(重点) (32 bits) | |||||||||||||||||||||||||||||||
8 | 9 | 10 | 11 | ||||||||||||||||||||||||||||
Header Length (4 bits) | Reserved (6 bits) | URG | ACK | PSH | RST | SYN | FIN | Windows Size (16 bits) | |||||||||||||||||||||||
12 | 13 | 14 | 15 | ||||||||||||||||||||||||||||
TCP Checksum (16 bits) | Urgent Pointer (16 bits) | ||||||||||||||||||||||||||||||
16 | 17 | 18 | 19 | ||||||||||||||||||||||||||||
Options (if any,variable length,padded with 0's) | |||||||||||||||||||||||||||||||
20 | 21 | 22 | 23 | ||||||||||||||||||||||||||||
Data (if any) | |||||||||||||||||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |