一、OSI七层模型
OSI由ISO(国际标准委员会)规定。
OSI七层模型 | |||
层级 | 名称 | 常用协议 | |
7 | 应用层 | http、 | 应用层 |
6 | 表示层 | LLP | |
5 | 回话层 | ssl、TLS | |
4 | 传输层 | tcp、udp | 负责底层的数据传输 |
3 | 网络层 | ip、icmp、rip | |
2 | 数据链路层 | 交换机、网卡 | |
1 | 物理层 | 物理线路 |
1.应用层
作用:为用户提供软件、接口、界面interface。
软件:微信、QQ等
协议:QICQ(qq底层协议)、HTTPS、BT/P2P
任何底层Aqq都有通信协议
2.表示层
作用:用于用户数据进行数据呈现(数据格式、数据加密)
例子:avi、rmvb、doc
3.会话层
作用:用于实现会话管理(建立、维持、关闭、区分)
4.传输层
数据的传输通过比特流的形式,数据一定会有丢失。
作用:用于数据的可靠或不可靠传输。
协议:TCP、IP
5.网络层
广域网:ip地址、路由器(运输车)、网络层
处于网络层的路由器才是搬运数据的搬运工
作用:提供三层寻址、IP地址和三层通信(路由器)功能。
6.数据链路层
局域网:mac地址、交换机(快递员)、链路层
作用:提供MAC地址和二层通信(交换机)功能。
协议:Ethernet
①数据封装是一个为数据包加入寻址信息的过程(类似快递)
②端口号用于标志不同的应用程序,面向最终用户(80代表http/浏览器,8000代表oicq/qq)
③IP地址用于唯一标志通信设备,面向路由器
④MAC地址用于唯一标志局域网设备,面向交换机
7.物理层
作用:提供通信介质和接口标准。
举例:RJ45等。
8.数据的传输案例
应用层把需要发送的数据先进行封装打上ip、port等信息并且数据分片
网卡将其以比特流的形式进行发送交换机查mac地址到路由器
路由器间查ip转发知道转发到目的主机
拆ip,mac确定端口交互完成
9.总结
1.OSI封装是一个为数据包加入寻址信息的过程
2.端口号用于标志不同的应用程序,面向最终用户
3.ip地址用于唯一标志通信设备,面向路由器
4.MAC地址用于唯一标志局域网设备,面向交换机
5.TCP/IP的四层协议:应用层、运输层、网际层、链路层
6.五层协议的体系结构:应用层、运输层、网络层、数据链路层、物理层
7.物理层实现光电信号转换以及介质运输(只关注单个逻辑比特的发送)只有物理层可以看到一个个0、1但是你不知道意思;数据链路层则实现一串比特的意义,将0、1组织起来使其成为有一定意义的数据;网络层与数据链路层比较,网络层的传输范围超出了局域网,实现了跨网通信,为传输层提供基础主要为网络通信提供路由选择(解决如何通过路由选择使数据分组跨越通信子网从源传送到目的的问题);传输层实现流量控制,超时重传;应用层--->用户应用层,像QQ邮箱等软件会调用此层的SMTP模块。
二、TCP\IP协议栈
1.端口
明确数据包丢给哪个应用
2.Ethernet协议
A.概述
Ethernet 以太网协议,用于实现链路层数据传输和地址封装MAC
任何一个数据包都包含以太网协议
B.字段
Destination/目的字段:标识目的主机MAC地址
LG 位:本地管理地址(这个不是出厂默认值)
IG位:单个地址(单播)
Source/源字段:标识发送端的MAC地址
LG位:全局唯一地址(出厂默认)
IG位:单个地址(单播)
Type/类型值:标志上层协议
对于类型值来说0x0800代表上面是一个IP 0x0806代表上面是arp
Type的作用:指明从链路层到网络层拆包的协议
交换机基于源MAC地址来学习MAC地址表,基于目的MAC来转发分组
C.MAC地址
①所有设备的MAC地址都是全球唯一的;
②MAC地址是16进制表示的,长度为48bit,采用冒号分16进制表示;
Destination: 2a:68:8b:84:d5:35
③MAC地址前半部分被称为“OUI代码”厂商唯一标志符,
用于唯一标志一个企业/公司,例如思科、TP-LINK、华为;后半部分厂商自行分配
3.IP协议(包含了IP地址)
A.定义
互联网协议,用于实现数据的不可靠面向无连接的通信,实现三层数据封装与IP寻址。
B.IP协议字段解读
IP头部标准20字节 最大60字节
Internet Protocol Version 4, Src: 192.168.43.39, Dst: 112.60.23.140
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 52
Identification: 0x45b9 (17849)
Flags: 0x40, Don't fragment
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 64
Protocol: TCP (6)
Header Checksum: 0x8173 [validation disabled]
[Header checksum status: Unverified]
Source Address: 192.168.43.39
Destination Address: 112.60.23.140
Version(版本号):标识IP协议的版本,目前V4版本地址已经枯竭,V6慢慢成为主流。
Header Length(头部长度):默认为20字节,最大为60字节。
Differentiated Services Field (服务区分符):用于为不同的IP数据包定义不同的服务质量,一般应用在QoS技术中就是区分VIP和普通用户的区分符。
Total Length (总长度):标识IP头部加上上层数据的数据包大小,IP包总长度最大为65535个字节。
Identification (标识符):用来实现IP分片的重组,标识分片属于哪个进程,不同进程通过不同ID区分。
Flags(标志符):用来确认是否还有IP分片或是否能执行分片。
Fragment offset (分片偏移量):用于标识IP分片的位置,实现IP分片的重组。
Time to live (TTL 生存时间):标识IP数据包还能生存多久,根据操作系统不同,TTL默认值不同,每经过一个三层设备如路由器的处理,则TTL减去1,当TTL=0时,则此数据包被丢弃。本质是为了IP数据包环路的问题。
Protocol (协议号):标识IP协议上层应用(标志上层协议)。当上层协议为ICMP时,协议号为1,TCP协议号为6,UDP的协议号为17。
Header checksum (头部校验):用于检验IP数据包是否完整或被修改,若校验失败则丢弃数据包。
Source(源IP地址):标识发送者IP地址,占用32bit。
Destination (目的IP地址):标识接收者IP地址,占用32bit。
Type、protocol、port的存在都是告知接收者需要使用哪个恰当的协议打开数据包,对于电脑发送数据包来说是先进行分片然后由上往下进行封装,目标主机收到数据包根据以上字段选择正确的协议对齐进行解包。
4.ARP协议
A.概述
①ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。
②在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据
封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目
MAC的封装。
③一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。
B.模拟使用
1.电脑主机ping一个ip
2.数据包自上而下进行封装
3.打包目标MAC地址时没有
4.发送arp requert询问MAC地址
5.目标主机arp return答复
arp -a查询本电脑地址映射表
arp -d清除映射表
C.实现过程
广播请求单播回应
Hardware type :硬件类型,标识链路层协议
Protocol type: 协议类型,标识网络层协议
Hardware size :硬件地址大小,标识MAC地址长度,这里是6个字节(48bti)
Protocol size: 协议地址大小,标识IP地址长度,这里是4个字节(32bit)
Opcode: 操作代码,标识ARP数据包类型,1表示请求,2表示回应
Sender MAC address :发送者MAC
Sender IP address :发送者IP
Target MAC address :目标MAC,此处全0表示在请求
Target IP address: 目标IP
5.ICMP协议
A.概述
互联网信息控制协议,Internet Control Message Protocol
用于实现链路连通性测试和链路追踪,可以实现链路差错报告。
ICMP运行在传输层协议,服务于IP协议。如ping命令
类型值/代码值:8 | 0 请求 0 | 0 回复 =》区分数据包类型
校验和:实现数据包完整性校验
标识符:用于标志不同的Ping进程
序列号:表示在此进程下的第几个包
B.tracert 探测本地到目的路径,拓扑踩点
tracert实现链路追踪并将路过的服务器返回。
链路追踪实现原理:将报文转发的第一个为TTL为1,故最近的TTL值减1,并回复给我。第二次TTL值为2,依次类推。
6.UDP
源端口
目标端口
数据包长度
校验和
UDP包比较简单实现不可靠传输,为了轻量级而进行的。
基于UDP协议开发的应用DHCP\DNS\QICQ\TFTP
7.DNS
端口53
DNS实现域名与IP之间的转换。本质思路是问一个网址所对应的ip地址。
8.DHCP
DHCP中服务器端口67,客户端68
动态主机配置协议,用于实现对终端设备的动态ip信息分配(IP地址、网关地址、DNS服务器)
网关=离你最近的一台路由器的地址
1.主机给服务器===>DHCP发现包,发现服务器(用于广播发现局域网DHCP服务器)
2.服务器给主机===>DHCP回复包,服务器把即将给它的ip告知它
3.服务器给主机===>DHCP请求包,对感兴趣的ip正式发起请求
4.主机给服务器===>DHCP确认包,对客户端进行正式确定。(此时服务器正式把该地址分配出去)
第一二个包中0.0.0.0指地址待填充 ,255.255.255.255指广播。
抓完整DHCP包
ipconfig /release //释放ip地址
ipconfig /renew //重新获取IP地址
9.TCP
基于TCP的应用层协议
HTTP:80
HTTPS:443
FTP:20 21
SSH:22
TELNET:23
SMTP/POP:25/110
面向连接的可靠传输
面向连接(三次握手、四次挥手)
可靠传输(经典重传、超时重传、快速重传/选择重传)
流量控制(滑动重传、拥塞管理)
多路复用(套接字)
10.telnet
telnet route-server.ip.att.net