TCP/IP协议栈常用协议及功能
文章目录
5 网络基础知识储备
5.1 OSI七层模式
5.2 TCP/IP协议栈
5.2.1 Ethernet
- 定义:以太网协议,用于为局域网提供通信地址(MAC地址)及通信机制(二层的媒质访问控制技术)(数据链路层)
-
MAC地址:(media access control address),媒体存取控制地址,也称局域网地址(LAN address),烧录在我们网卡中的物理地址,不能改变,唯一标识一台设备(全球唯一)
-
- MAC地址长度为48位,通常表示位12个16进制数;前二十四位为厂商号,后二十四位为厂商指定号
-
- MAC地址结构:
47 | 46 | 45-24(22bit) | 0-23(24bit) |
---|---|---|---|
I/G | G/L | 组织唯一标识符(OUI) (由IEEE分配) |
由厂家分配 |
-
-
- I/G:高位是Individual/Group(VG)位,当它的值为0时,就可以认为这个地址实际上是设备的MAC地址,它可能出现在MAC报头的源地址部分;当它的值为1时,就可以认为这个地址表示以太网中的广播地址或组播地址,或者表示TR和FDD中的广播地址或功能地址
- G/L:(也称U/L,这里的U表示全局),当这一位设置为0时,就表示一个全局管理地址(由IEEE分配);当这一位为1时,就表示一个在管理上统治本地的地址(就像在DECnet中一样)
- OUI(Organizationally Unique Identifier):组织唯一标识符
- 后24位表示本地管理的或厂商分配的代码。厂家制造的第一块网卡的这一部分地址通常以24个0开头,最后-块网卡则以24个1结束(共有16777216块网卡)。在实际中可以发现,许多厂商使用同样的6个十六进制数字,作为同一块网卡上***的最后6个数字
-
- 原理:局域网通信需要MAC地址,交换机通过查找自己的MAC地址表,决定数据包从哪个接口发出去(采用带冲突检测的载波侦听多路访问(CSMA/CD)机制)
- 交换机转发数据包的依据: 当MAC地址表有MAC地址条目,查找根据接口发出;如果没有该条目,从收到的接口以外其他所有的接口泛洪(广播)
5.2.2 ARP
- 定义:ARP(Address Resolution Protocol)地址解析协议 ,是局域网通信的一种协议(网络层)
- 功能:通过对方的IP地址来获取对方的MAC地址
- 原理 :在任何时候,一台主机有IP数据报文发送给另一台主机,它都要知道接收方的逻辑(IP)地址。但是IP地址必须封装成帧才能通过物理网络。这就意味着发送方必须有接收方的物理(MAC)地址,因此需要完成逻辑地址到物理地址的映射。而ARP协议可以接收来自IP协议的逻辑地址,将其映射为相应的物理地址,然后把物理地址递交给数据链路层。
- ARP报文
- ARP报文结构
- 当封装在以太网帧中的格式:
-
- 目标MAC地址(字段1):ARP请求的目的以太网地址,全1时,代表广播地址;
- 源MAC地址(字段2):发送ARP请求的以太网地址;
- 帧类型(字段3):以太网帧类型表示后面的数据类型,ARP请求和ARP应答此字段为:0x0806;
- 硬件类型(字段4):硬件地址类型,硬件地址不止以太网一种,是以太网类型时,值为1;
- 协议类型(字段5):表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800;
- 协议地址长度(字段6和7):表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节;
- 操作类型OP(字段8):是操作类型字段,值为1,表示进行ARP请求;值为2,表示进行ARP应答;值为3,表示进行RARP请求;值为4,表示进行RARP应答;
- 源MAC地址(字段9):是发送端ARP请求或应答的硬件地址,这里是以太网地址,和字段2相同;
- 源IP地址(字段10):是发送ARP请求或应答的IP地址;
- 目标MAC地址和目标IP地址(字段11和12):是目的端的硬件地址和IP地址;
- ARP命令
5.2.3 IP
- 定义:IP协议(Internet Protocol),互联网协议,用于提供三层寻址(IP地址)以及三层通信功能(TCP/IP核心)(网络层)
- 原理:
- 只要路由器的接口配置了IP地址,并且接口是双UP状态,路由器就会自动生成直连路由
- 路由器收到数据包之后,根据IP包头里面的目的IP,然后查找路由表
- 如果路由表有去往目的网络的路由表目,从对应的接口转发,如果没有,丢弃
- 数据报:分为首部和数据两部分
- IPV4包头:
-
-
版本(Version):这个4位字段定义了IP协议的版本,目前主流的版本是4;4 代表ipv4 、 6 代表ipv6(4bit)
-
首部长度HLEN(Header length):这个4位字段定义了数据报首部的长度,以4字节的字为单位。当首部没有选项时,首部长度为20字节;当这个字段值位最大值F时,首部长度最大为60字节。(4bit)
-
服务类型(Type of service): (3bit优先级+4bit TOS+1bit未用)TOS允许按照吞吐量、时延(8bit )
-
总长度(Total length):这个16位字段定义了数据报总长度,其以字节为单位。故IPv4数据报总长度上限值位65536字节。(16 bit)
-
标识(Identification):这个16位字段标志了从源主机发出的一个数据报,这样就确定了数据报的唯一性。这样使得数据报被分片后,在到达终点时终点能根据标识号将同一个数据报的分片重新组装成一个数据报。(16bit)
-
标志(Flags):
-
- 第一位保留(未用),第二位为“不分片(do not fragment)”,第三位位“还有分片(more fragment)”。
- D为1时,不能对数据进行分片;为0可以进行分片。
- M为1时,标识还有分片;为0表示最后一个分片。(3bit)
-
分片偏移(Fragment offset): 这个13位字段表示的是分片在整个数据报中的相对位置。这是数据在原始数据报中的偏移量,以8字节位单位。(13bit)
-
生存时间(Time to live): 这个8位字段用来控制数据报所经过的最大跳数(路由器),每经过一个路由器,这个字段数值都减1,减1后变位0时,路由器就丢弃这个数据报。 代表数据包最多能被多少台路由器转发(8bit)
-
协议(Protocol): 代表上层使用的哪种协议(8bit)
-
- 1表示ICMP,2表示IGMP,6表示TCP,17表示UDP,89表示OSPF
-
首部检验和(Header checksum): 根据ip头部(不包括data)计算的校验值码,保证报文的完整性和准确性(16 bit)
-
源ip地址(Source ip address): 代表这个数据包来哪里(32bit)
-
目的ip地址(Destination ip address): 代表这个数据包要到哪里去(32bit)
-
可选项(Options): 用来支持排错、测量以及安全等措施(32bit)
-
-
主要特性:IP是一个无连接的、不可靠的、点对点的协议,只能尽力(Best Effort)传送数据,不能保证数据的到达。
-
IPV4和IPV6包头结构对比
比较项目 | IPV4 | IPV6 |
---|---|---|
报头字段 | 版本 | 相同字段,但是版本号不同 |
报头字段 | Internet报头长度 | 已从IPV6中删除,IPV6不包括报头长度字段,因为IPV6报头总是40字节的固定长度。每个扩展报头或者是固定长度或者标识了自己的长度 |
报头字段 | 服务类型 | 由IPV6的通信流类别字段取代 |
报头字段 | 总长度 | 由IPV6的有效负载长度字段取代,这个字段仅表示有效负载的长度 |
报头字段 | 标识符 | 已从IPV6中删除,片段信息并不包含在IPV6报头中,而是包括在片段扩展报头中 |
报头字段 | 标签 | 已从IPV6中删除,片段信息并不包含在IPV6报头中,而是包括在片段扩展报头中 |
报头字段 | 片段偏移 | 已从IPV6中删除,片段信息并不包含在IPV6报头中,而是包括在片段扩展报头中 |
报头字段 | 生存时间 | 由IPV6的跳限制字段取代 |
报头字段 | 协议 | 由IPV6的下一个报头字段取代 |
报头字段 | 首部检验和 | 已从IPV6中删除,链路层有对整个IPV6数据包做比特层面的错误检测的校验和 |
报头字段 | 源IP地址 | 保持不变,除了IPV6的地址是128比特长 |
报头字段 | 目的IP地址 | 保持不变,除了IPV6的地址是128比特长 |
报头字段 | 可选项 | 已从IPV6中删除,IPV6扩展报头取代了IPV4选项 |
比较项目 | IPV4 | IPV6 |
---|---|---|
报头字段数目 | 12(包括选项) | 8 |
必须由中间路由器处理的字段数目 | 6 | 4 |
报头选项的处理 | IPV4报头包括了所有的选项,因此,每个中间路由器都必须检查他们是否存在,如果存在,则进行处理,这会降低IPV4数据包转发过程的效率 | IPV6中,发送和转发选项被移至扩展报头中,中间路由器必须处理的唯一一个扩展报头就是逐跳选项扩展报头,这加快了IPV6报头的处理速度并提高了转发效率 |
片段字段 | 片段标签组合了片段标签和片段偏移字段后得到的16位中的高3位 | 用于片段标签的是组合了片段标签和片段偏移字段后得到的16位中的低3位 |
片段字段 | 标识字段是16位长 | 标识字段是32位长,没有不要拆分(DF)的标签,因为IPV6路由器绝不执行拆分操作 |
5.2.4 ICMP
- 定义:ICMP协议(Internet Control Message Protocol),互联网控制信息协议,用于实现联通性测试(ping)(网络层)
- 连通性:就是是否可达
- 类型:
-
- 0 响应应答(ECHO-REPLY)
- 3 不可到达
- 4 源抑制
- 5 重定向
- 8 响应请求(ECHO-REQUEST)
- 11 超时
- 12 参数失灵
- 13 时间戳请求
- 14 时间戳应答
- 15 信息请求(*已作废)
- 16 信息应答(*已作废)
- 17 地址掩码请求
- 18 地址掩码应答
- ICMP报文
- 全部消息类型
类型 | 代码 | 描述 | 查询 | 差错 |
---|---|---|---|---|
0 | 0 | Echo Reply——回显应答(Ping应答) | ✔ | |
3 | 目的不可达 | |||
0 | Network Unreachable——网络不可达 | ✔ | ||
1 | Host Unreachable——主机不可达 | ✔ | ||
2 | Protocol Unreachable——协议不可达 | ✔ | ||
3 | Port Unreachable——端口不可达 | ✔ | ||
4 | Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特 | ✔ | ||
5 | Source routing failed——源站选路失败 | ✔ | ||
6 | Destination network unknown——目的网络未知 | ✔ | ||
7 | Destination host unknown——目的主机未知 | ✔ | ||
8 | Source host isolated (obsolete)——源主机被隔离(作废不用) | ✔ | ||
9 | Destination network administratively prohibited——目的网络被强制禁止 | ✔ | ||
10 | Destination host administratively prohibited——目的主机被强制禁止 | ✔ | ||
11 | Network unreachable for TOS——由于服务类型TOS,网络不可达 | ✔ | ||
12 | Host unreachable for TOS——由于服务类型TOS,主机不可达 | ✔ | ||
13 | Communication administratively prohibited by filtering——由于过滤,通信被强制禁止 | ✔ | ||
14 | Host precedence violation——主机越权 | ✔ | ||
15 | Precedence cutoff in effect——优先中止生效 | ✔ | ||
4 | 0 | Source quench——源端被关闭(基本流控制) | ✔ | |
5 | 重定向 | ✔ | ||
0 | Redirect for network——对网络重定向 | ✔ | ||
1 | Redirect for host——对主机重定向 | ✔ | ||
2 | Redirect for TOS and network——对服务类型和网络重定向 | ✔ | ||
3 | Redirect for TOS and host——对服务类型和主机重定向 | ✔ | ||
8 | 0 | Echo request——回显请求(Ping请求) | ✔ | |
9 | 0 | Router advertisement——路由器通告 | ✔ | |
10 | 0 | Route solicitation——路由器请求 | ✔ | |
11 | 短时 | |||
0 | TTL equals 0 during transit——传输期间生存时间为0 | ✔ | ||
1 | TTL equals 0 during reassembly——在数据报组装期间生存时间为0 | ✔ | ||
12 | 参数问题 | |||
0 | IP header bad (catchall error)——坏的IP首部(包括各种差错) | ✔ | ||
1 | Required options missing——缺少必需的选项 | ✔ | ||
13 | 0 | Timestamp request (obsolete)——时间戳请求(作废不用) | ✔ | |
14 | 0 | Timestamp reply (obsolete)——时间戳应答(作废不用) | ✔ | |
15 | 0 | Information request (obsolete)——信息请求(作废不用) | ✔ | |
16 | 0 | Information reply (obsolete)——信息应答(作废不用) | ✔ | |
17 | 0 | Address mask request——地址掩码请求 | ✔ | |
18 | 0 | Address mask reply——地址掩码应答 | ✔ |
- ICMP的工具(实现)
-
- ping
- tracert(pc上)(traceroute路由器上)
- ping的原理:8 请求包-0 回复包
-
- Type:类型8bit表示ICMP报文的类型
- Code:代码8bit
- Identifier:标识符,用于标识Ping的进程
- Sequence Number:***,每个进程的包序号
- Tracert的原理:用于进行链路的追踪,使用ICMP和TTL的值(递减的概念)
-
- PC发送一个icmp请求包,将ip包头里面的TTL值设为1,R1收到以后,将TTL值减1,然后通过icmp包(非回复包)回复pc,icmp超时
- PC发送一个icmp请求包,将ip包头里面的TTL值设为2,R1收到以后,将TTL值减1,然后传给R2;R2收到以后,将TTL值减1,然后通过icmp包回复pc,icmp超时
- 后面的以此类推
- 当server收到icmp请求包后,直接通过icmp回复包回复pc
- Windows下常见网络相关命令:
-
- Ipconfig //查看IP地址
- Ipconfig /all //查看详细地址信息(包括MAC和IP地址等等)
- Arp -a //查看ARP缓存表
- Arp -d //删除ARP表
- Ping //测试连通性
- Tracert //链路追踪
- Nslookup //域名地址的解析
- Route print //查看路由表
5.2.5 DHCP
-
定义:DHCP协议(Dynamic host configuration protocol)动态主机配置协议(应用层)
-
功能:动态的配置主机的ip地址,掩码,网关,dns服务器,租期
-
原理:dhcp报文:都是广播的(255.255.255.255)
- .0网络地址 .255网络广播地址
DHCP报文类型 | 描述 |
---|---|
DHCP Discover(0x01) | DHCP客户端在请求IP地址时并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送Discover请求报文,以发现网络中的DHCP服务器。所有收到Discover报文的DHCP服务器都会发送应答报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置 |
DHCP Offer(0x02) | DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给DHCP客户端,告知用户本服务器可以为其提供IP地址。但这个报文只是告诉DHCP客户端可以提供IP地址,最终还需要客户端通过ARP来检测该IP地址是否重复 |
DHCP Request(0x03) | DHCP客户端可能会收到很多Offer请求报文,所以必须在这些应答中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文,通告选择的服务器,希望获得所分配的IP地址。另外,DHCP客户端在成功获取IP地址后,在地址使用租期达到50%时,会向DHCP服务器发送单播Request请求报文请求续延租约,如果没有收到ACK报文,在租期达到87.5%时,会再次发送广播的Request请求报文以请求续延租约 |
DHCP ACK(0x05) | DHCP服务器收到Request请求报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK应答报文,通知用户可以使用分配的IP地址 |
DHCP NAK(0x06) | 如果DHCP服务器收到Request请求报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则向DHCP客户端发送NAK应答报文,通知用户无法分配合适的IP地址 |
DHCP Release(0x07) | 当DHCP客户端不再需要使用分配IP地址时(一般出现在客户端关机、下线等状况)就会主动向DHCP服务器发送RELEASE请求报文,告知服务器用户不再需要分配IP地址,请求DHCP服务器释放对应的IP地址 |
DHCP Decline(0x04) | DHCP客户端收到DHCP服务器ACK应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文,通知服务器所分配的IP地址不可用,以期获得新的IP地址 |
DHCP Inform(0x08) | DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向DHCP服务器发送Inform请求报文;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文。目前基本上不用了 |
- DHCP报文结构
-
- op,报文类型,1表示请求报文,2表示回应报文
-
- 请求报文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline
- 应答报文:DHCP Offer、DHCP ACK和DHCP NAK
- htype,硬件地址类型,1表示10Mb/s的以太网的硬件地址
- hlen,硬件地址长度,以太网中该值为6
- hops,跳数。客户端设置为0,也能被一个代理服务器设置;DHCP请求报文每经过一个DHCP中继,该字段就会增加1;没有经过DHCP中继时值为0
- xid,事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配。该ID由客户端设置并由服务器返回,为32位整数
- secs,由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数
- flags,标志字段。这个16比特的字段,目前只有最左边的一个比特有用,该位为0,表示单播,为1表示广播
- ciaddr,客户端的IP地址。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充
- yiaddr,"你自己的"或客户端的IP地址
- siaddr,表明DHCP协议流程的下一个阶段要使用的服务器的IP地址
- giaddr,DHCP中继器的IP地址。//注意:不是地址池中定义的网关
- chaddr,客户端硬件地址。客户端必须设置它的"chaddr"字段。UDP数据包中的以太网帧首部也有该字段,但通常通过查看UDP数据包来确定以太网帧首部中的该字段获取该值比较困难或者说不可能,而在UDP协议承载的DHCP报文中设置该字段,用户进程就可以很容易地获取该值
- sname,可选的服务器主机名,该字段是空结尾的字符串,由服务器填写
- file,启动文件名,是一个空结尾的字符串。DHCP Discover报文中是"generic"名字或空字符,DHCP Offer报文中提供有效的目录路径全名
- options,可选参数域,格式为"代码+长度+数据"
-
- options
代码 | 长度(字节) | 说明 |
---|---|---|
1 | 4 | 子网掩码 |
3 | 长度可变,必须是4字节的倍数 | 默认网关(可以是一个路由器IP地址列表) |
6 | 长度可变,必须是4字节的倍数 | DNS服务器(可以是一个DNS服务器IP地址列表) |
15 | 长度可变 | 域名称(主DNS服务器名称) |
42 | 长度可变,必须是4字节的倍数 | NTP服务器(可以是一个NTP服务器IP地址列表) |
44 | 长度可变,必须是4字节的倍数 | WINS服务器(可以是一个WINS服务器IP地址列表) |
51 | 4 | 有效租约期(以秒为单位) |
53 | 1 | 报文类型(1 ~ 8)分别表示:Discover,Offer,Request,Decline,ACK,NAK,Release,Inform |
58 | 4 | 续约时间 |
60 | 长度可变 | Authentication for DHCP Message,用来完成基于标准DHCP协议,以在客户端输入用户名和密码的方式进行地址鉴权主要用在按用户认证收费场合,与之对应的是pppoe认证计费 |
255 | 0 | 标记options结束 |
- 总结:
-
- DHCP端口:68是客户端口,67是服务端口
- 四个包都是广播包(linux环境下)两个广播两个单播(Windows环境下)
- 谁先给offer,就向谁请求(先到先得)
5.2.6 Telnet
- 定义:Telnet协议,远程登录协议,基于TCP的23端口(应用层)
- Telnet 协议是基于网络虚拟终端 NVT(Network Virtual Termina1)的实现
- 特点:
-
- 适应异构
- 传送远地命令
- 数据流向
- 强制命令
- 选项协商
- 原理:Telnet 协议的主体由三个部分组成:网络虚拟终端(NVT,Network Virtual Terminal)、协商原理、终端和进程的对称观
- Telnet route -server.ip.att.net
- route-server.ip.att.net的IP地址是12.0.1.28
5.2.7 UDP
- 定义:UDP协议(Uesr Datagram Protocol),用户数据报协议,用于实现面向无连接和不可靠传输服务(TCP 传输控制协议作用:用于面向连接和可靠传输服务)(端口号 17)(传输层)
- UDP包头大小:固定的8字节
- 特点:速度快(无建立连接),适合于发送小数据量的应用(QQ软件、DHCP协议、DHCP协议、直播)、分组首部开销小
- 功能:复用和分用以及差错检测
- 端口号:IP+端口号(传输层的概念 用来标识上层使用哪种服务)
-
- 端口号范围为0~65535
- 一般的服务器(目的端口)所采用的端口号为1~1023:
- 一般电脑(源端口)所采用的端口号为高端口(随机的)
- 常用的端口号:
-
- DNS 53
- TFTP 69
- SNMP 161
- NFS 110
- BOOTP 67
- UDP报文结构
-
- 源端口(Source Port):这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0。这样,接收端的应用程序就不能发送响应了
- 目的端口(Destination Port):接收端计算机上 UDP 软件使用的端口,占据 16 位
- 长度(Length):该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8
- 校验值(Check Sum):该字段占据 16 位,可以检验数据在传输过程中是否被损坏
5.2.8 TCP
- 定义:TCP协议(Transmission Control Protocol),传输控制协议,用于实现面向连接的可靠的基于字节流的传输功能(传输层)
- 功能:
-
- 面向连接
- 可靠传输
- 流量控制
- 多路复用
- TCP报文段
-
- 源端口和目的端口(Source Port、Destination Port):各占2个字节,分别写入源端口号和目的端口号
- 序号(Sequence Number):占4个字节。序号使用mod运算。TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。故该字段也叫做“报文段序号”
- 确认序号(Acknowledgment Number):占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。若确认序号=N,则表明:到序号N-1为止的所有数据都已正确收到
- 数据偏移(Data Offset):占4位,表示TCP报文段的首部长度。注意,“数据偏移”的单位是32位字(即以4字节长的字为计算单位)。故TCP首部的最大长度为60字节
- 保留(Reserved):占6位,保留为今后使用,目前置为0
- 窗口(Window):占2个字节。窗口值作为接收方让发送方设置其发送窗口的依据
- 检验和(Checksum):占2字节。检验和字段检验的范围包括首部和数据这两部分。和UDP数据报一样,在计算检验和时,也要在TCP报文段的前面加上12字节的伪首部。伪首部的格式与UDP用户数据报的伪首部一样,但要将伪首部第四个字段中的17 改为6(协议号),把第5字段中的UDP长度改为TCP长度
- 紧急指针(Urgent Pointers):占2字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数
- TCP首部报文信息中,有一个状态控制码(Code,Control Flag),也叫标志位字段(U、A、P、R、S、F):占6比特。各比特的含义如下:
-
- URG:紧急比特(urgent)。当URG=1时,表明紧急指针字段有效,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据), 且上图中的 Urgent Pointer 字段也会被启用
- ACK:确认比特(Acknowledge)。只有当ACK=1时确认号字段才有效,代表这个封包为确认封包。当ACK=0时,确认号无效
- PSH:(Push function)。若为1时,代表要求对方立即传送缓冲区内的其他对应封包,而无需等缓冲满了才送
- RST:复位比特(Reset) 。当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
- SYN:同步比特(Synchronous)。SYN置为1,就表示这是一个连接请求或连接接受报文,通常带有 SYN 标志的封包表示『主动』要连接到对方的意思
- FIN:终止比特(Final)。用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
5.2.9 DNS
- 定义:DNS协议(Domain Name System)域名系统,是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统(应用层)
- 原理:DNS主要由3部分组成:域名空间(domain name space)和资源记录(resource record)、域名服务器(name server)、解析器(resolver)
- DNS报文结构
-
-
头部部分(Header)
-
- 会话标识(Transaction ID)(2字节):是DNS报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应
- 标志(Flags)(2字节):
Flags 说明 QR(1bit) 查询/响应标志,0为查询,1为响应 opcode(4bit) 0表示标准查询,1表示反向查询,2表示服务器状态请求 AA(1bit) 表示授权回答 TC(1bit) 表示可截断的 RD(1bit) 表示期望递归 RA(1bit) 表示可用递归 rcode(4bit) 表示返回码,0表示没有差错,3表示名字差错,2表示服务器错误(Server Failure) -
数量字段(总共8字节):Questions、Answer RRs、Authority RRs、Additional RRs 各自表示后面的四个区域的数目。
Questions表示查询问题区域节的数量,
Answers表示回答区域的数量,
Authoritative namesversers表示授权区域的数量,
Additional recoreds表示附加区域的数量
-
正文部分
-
-
查询问题区域(Queries)
-
-
查询名(Name):长度不固定,且不使用填充字节,一般该字段表示的就是需要查询的域名(如果是反向查询,则为IP,反向查询即由IP地址反查域名)
-
查询类型(Type):
类型 助记符 说明 1 A 由域名获得IPv4地址 2 NS 查询域名服务器 5 CNAME 查询规范名称 6 SOA 开始授权 11 WKS 熟知服务 12 PTR 把IP地址转换成域名 13 HINFO 主机信息 15 MX 邮件交换 28 AAAA 由域名获得IPv6地址 252 AXFR 传送整个区的请求 255 ANY 对所有记录的请求 -
查询类(Class):通常为1,表明是Internet数据
-
-
回答区域(Answers)
-
授权区域(Authoritative nameservers)
-
附加区域(Additional recoreds)
-
-
5.2.10 SSH
-
定义:SSH协议(Secure Shell)安全外壳协议,是一种通用的、功能强大的、基于软件的网络安全解决方案(应用层)
-
SSH协议簇
-
-
传输层协议 [SSH-TRANS]:提供服务器验证、完整性和保密性功能,建立在传统的TCP/IP协议之上
-
验证协议 [SSH-USERAUTH]:向服务器验证客户端用户,有基于用户名密码和公钥两种验证方式,建立在传输层协议 [SSH-TRANS]之上
-
连接协议 [SSH-CONNECT] :将加密隧道复用为若干逻辑信道。它建立在验证协议之上
-
5.2.11 SMTP
- 定义:SMTP协议(Simple Mail Transfer Protocol)简单邮件传输协议,一种提供可靠且有效的电子邮件传输的协议(端口号 25)(应用层)
5.2.12 PPP
- 定义:PPP协议(Point to Point Protocol)点对点协议,是为在同等单元之间传输数据包这样的简单链路设计的链路层协议(数据链路层)
- 功能
-
- PPP具有动态分配IP地址的能力,允许在连接时刻协商IP地址
- PPP支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等
- PPP具有错误检测能力,但不具备纠错能力,所以ppp是不可靠传输协议
- 无重传的机制,网络开销小,速度快
- PPP具有身份验证功能
- PPP可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如SDH),PPP也用于Internet接入
- 组成
-
- 提供一个将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是信息部分,长度受最大传送单元MTU的限制。PPP支持异步链路(无奇偶校验的8比特数据)和面向比特的同步链路
-
链路控制协议LCP(Link Control Protocol)
当线路不再需要时,挑出这些线路,测试它们,商议选择,并仔细地再次释放链路控制协议 - 一套网络控制协议NCP(Network Control Protocol)
其中每一个协议支持不同的网络层协议,如IP、OSI的网络层等 -
认证协议
最常用的包括口令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)
5.2.13 SLIP
- 定义:SLIP协议(Serial Line Internet Protocol)串行线路网际协议,是最早的、也是仅有的两个串行IP协议之一,属于异型IP协议(数据链路层)
5.2.14 FTP
- 定义:FTP协议(File Transfer Protocol)文件传输协议,是一种提供网络之间共享文件的协议(应用层)(端口号 20数据连接 21控制连接)
- 组成:FTP服务器、FTP客户端
小结
- TCP/IP协议:TCP/IP模型也被称作DoD模型(Department of Defense Model);
TCP/IP | 协议 |
---|---|
应用层 | TELNET、SSH、HTTP、SMTP、POP、SSL/TLS、FTP、MIME、HTML、SNMP、MIB、BIP、RTP |
传输层 | TCP、UDP、UDP-Lite、SCTP、SCCP |
网络层 | ARP、IPV4、IPV6、ICMP、IPsec |
网络接入层 | Ethernet、无线LAN、PPP |
- OSI模型
OSI | 协议 |
---|---|
应用层 | DHCP、DNS、FTP、Gopher、HTTP、IMAP4、IRC、NNTP、XMPP、POP3、SIP、SMTP、SNMP、SSH、TELNET、RPC、RTCP、RTP、RTSP、SDP、SOAP、GTP、STUN、NTP、SSDP |
表示层 | HTTP/HTML、FTP、TELNET、ASN.1 |
会话层 | ADSP、ASP、H.245、ISO-SP、iSNS、NetBIOS、PAP、RPC、RTCP、SMPP、SCP、SSH、ZIP、SDP |
**PS:**其实在应用层、表示层、会话层这三层,协议可以共用;
- TCP/IP协议栈常用协议
-
-
应用层
-
-
**超文本传输协议HTTP:**这是一种最基本的客户机/服务器的访问协议;浏览器向服务器发送请求,而服务器回应相应的网页
-
文件传送协议FTP:提供交互式的访问,基于客户服务器模式,面向连接 使用TCP可靠的运输服务;主要功能:减少/消除不同操作系统下文件的不兼容性
-
**远程登录协议TELNET:**客户服务器模式,能适应许多计算机和操作系统的差异,网络虚拟终端NVT的意义
-
简单邮件传送协议SMTP:Client/Server模式,面向连接
基本功能:写信、传送、报告传送情况、显示信件、接收方处理信件
-
**简单文件传送协议TFTP:**客户服务器模式,使用UDP数据报,只支持文件传输,不支持交互,TFTP代码占内存小
-
-
-
简单网络管理协议SNMP: SNMP模型的4个组件:被管理结点、管理站、管理信息、管理协议
SNMP代理:运行SNMP管理进程的被管理结点
对象:描述设备的变量
管理信息库(MIB):保存所有对象的数据结构
-
动态主机配置协议DHCP: 发现协议中的引导文件名、空终止符、属名或者空,DHCP供应协议中的受限目录路径名 Options –可选参数字段,参考定义选择列表中的选择文件
-
传输层
-
-
**传输控制协议TCP:**传输控制协议,传输效率低,可靠性强
- **用户数据报协议UDP:**用户数据报协议,适用于传输可靠性要求不高,数据量小的数据(比如QQ)
-
网络层
-
-
网络接入层