通过Wireshark学习TCPIP协议和分析PS业务要点.docx
- 文档编号:10940532
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:20
- 大小:672.35KB
通过Wireshark学习TCPIP协议和分析PS业务要点.docx
《通过Wireshark学习TCPIP协议和分析PS业务要点.docx》由会员分享,可在线阅读,更多相关《通过Wireshark学习TCPIP协议和分析PS业务要点.docx(20页珍藏版)》请在冰豆网上搜索。
通过Wireshark学习TCPIP协议和分析PS业务要点
一.TCP/IP四层模型和OSI七层模型对比
OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络协议,我们把OSI七层网络模型和TCP/IP四层概念模型对应,然后将各种网络协议归类。
OSI七层模型
OSI七层网络模型
功能
传输单位
应用层(Application)
提供具体网络服务
数据Data
表示层(Presentation)
数据表示,包括数据的格式、加密、压缩
数据Data
会话层(Session)
建立、维护和中止会话
数据Data
传输层(Transport)
提供端对端连接
片Segment
网络层(Network)
网络寻址和最佳路径选择
包Packet
数据链路层(DataLink)
介质访问控制
帧Frame
物理层(Physical)
二进制传输
比特Bit
TCP/IP四层模型和OSI七层模型对应表
OSI七层网络模型
TCP/IP四层概念模型
对应网络协议
应用层(Application)
应用层
TFTP,FTP,NFS,WAIS
表示层(Presentation)
Telnet,Rlogin,SNMP,Gopher
会话层(Session)
SMTP,DNS
传输层(Transport)
传输层
TCP,UDP
网络层(Network)
网际层
IP,ICMP,ARP,RARP,AKP,UUCP
数据链路层(DataLink)
网络接口层
FDDI,Ethernet,Arpanet,PDN,SLIP,PPP
物理层(Physical)
IEEE 802.1A,IEEE802.2到IEEE802.11
二.TCP/IP模型各层功能
1.网络接口层
TCP/IP概念模型的网络接口层(也叫链路层)把OSI的数据链路层和物理层放在一起,对应的网络协议主要是:
Ethernet、PPP、FDDI和能传输IP数据包的任何协议。
网络接口层负责数据帧(Frame)的发送和接收,帧是独立的网络信息传输单元。
2.网际层
TCP/IP概念模型的网际层对应OSI的网络层,管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了数据包(Packet)的传输方法,确保数据包能正确地到达目的机器。
这一过程中,IP协议和其他网际层的协议共同用于数据传输。
重要的网际层协议包括ARP(地址解析协议)、ICMP(Internet控制消息协议)、IGMP(Internet组管理协议)和IP协议(网际协议)。
3.传输层
TCP/IP概念模型的传输层对应OSI的传输层。
传输层提供应用程序间的通信。
其功能包括:
格式化信息流和提供可靠传输。
为实现后者,传输层协议规定接收端必须发回确认信息,如果分组丢失,必须重新发送。
传输层包括TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议),它们是传输层中最主要的协议。
TCP建立在IP之上,定义了网络上程序到程序的数据传输格式和规则,提供了IP数据包的传输确认、丢失数据包的重新请求、将收到的数据包按照它们的发送次序重新装配的机制。
TCP协议是面向连接的协议,类似于打电话,在开始传输数据之前,必须先建立明确的连接。
UDP也建立在IP之上,但它是一种无连接协议,两台计算机之间的传输类似于传递邮件:
消息从一台计算机发送到另一台计算机,两者之间没有明确的连接。
UDP不保证数据的传输,也不提供重新排列次序或重新请求的功能,所以说它是不可靠的。
虽然UDP的不可靠性限制了它的应用场合,但它比TCP具有更好的传输效率。
举例说明传输层的作用,以太网无法接收大于1514字节的数据包,其中14字节是以太网帧的帧头。
发送方节点的传输层将数据分割成较小的数据片(Segment),同时对每一数据段安排一序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组,该过程即被称为排序。
4.应用层
TCP/IP概念模型中的应用层对应OSI的应用层、表示层和会话层。
应用层位于协议栈的顶端,它的主要任务是应用。
应用层一般是可见的,如利用FTP(FileTransferProtocol,文件传输协议)传输一个文件(Data),请求一个和目标计算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。
常见的应用层协议有:
HTTP,FTP,Telnet,SMTP和Gopher等。
三.TCP/IP模型各层传输单位
一个UDP报文的分解模型
1.MAC帧(网络接口层)
EthernetII(ARPA)是最常见的以太网MAC帧格式,帧头长14字节,结构如下:
1)目的MAC地址(Destination):
占6字节
2)源MAC地址(Source):
占6字节
3)协议类型(Type):
占2字节
MAC地址也叫硬件地址,在网络底层的物理传输过程中,是通过MAC地址来识别主机的,它一般也是全球唯一的。
MAC地址由48比特长的16进制的数字组成,例如:
44-45-53-54-00-00(ff-ff-ff-ff-ff-ff为广播地址)。
0-23位叫做组织唯一标志符,是识别LAN(局域网)节点的标识,24-47位是由厂家自己分配,其中第40位是组播地址标志位。
MAC地址通常是由网卡生产厂家烧入网卡的EPROM,它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。
EthernetIIMAC帧格式
在上图通过wireshark捕获的EthernetII帧里,目的MAC地址为0e-00-0e-00-00-00,源MAC地址为94-a8-20-00-0e-00,协议类型为IP(0x0800)。
2.IP数据包(网际层)
IP数据包也叫IP报文分组,它由IP报文头和IP报文用户数据组成,IP报文头的长度一般在20到60个字节之间,而一个IP分组的最大长度则不能超过65535个字节。
1)版本(Version):
占4位,指IP协议的版本号。
目前的主要版本为IPV4,即第4版本号,也有一些教育网和科研机构在使用IPV6。
在进行通信时,通信双方的IP协议版本号必须一致,否则无法直接通信。
2)首部长度(Headerlength):
占4位,指IP报文头的长度。
最大的长度(即4个bit都为1时)为15个长度单位,每个长度单位为4字节(TCP/IP标准,DoubleWord),所以IP协议报文头的最大长度为60个字节,最短为上图所示的20个字节。
3)服务类型(DifferentiatedServiceField):
占1个字节,用来获得更好的服务。
其中的前3位表示报文的优先级,后面的几位分别表示要求更低时延、更高的吞吐量、更高的可靠性、更低的路由代价等。
对应位为1即有相应要求,为0则不要求。
4)总长度(TotalLength):
占2个字节,指报文的总长度。
注意这里的单位为字节,而不是4字节,所以一个IP报文的最大长度为65535个字节。
5)标识(Identification):
该字段标记当前分片为第几个分片,在数据报重组时很有用。
6)标志(Flags):
该字段用于标记该报文是否为分片(有一些可能不需要分片,或不希望分片),后面是否还有分片(是否是最后一个分片)。
7)片偏移(Fragmentoffset):
指当前分片在原数据报(分片前的数据报)中相对于用户数据字段的偏移量,即在原数据报中的相对位置。
8)生存时间(Timetolive):
该字段表明当前报文还能生存多久。
每经过1ms或者一个网关,TTL的值自动减1,当生存时间为0时,报文将被认为目的主机不可到达而丢弃。
在windows中输入ping命令,在返回的结果中即有TTL的数值。
9)协议(Protocal):
该字段指出在上层(TCP/IP的传输层)使用的协议,可能的协议有UDP、TCP、ICMP、IGMP、IGP等。
10)首部校验和(Headerchecksum):
用于检验IP报文头部在传播的过程中是否出错,主要校验报文头中是否有某一个或几个bit被污染或修改了。
11)源IP地址(Source):
占4个字节,每一个字节为0~255之间的整数,即我们日常见到的IP地址格式。
12)目的IP地址(Destination):
占4个字节,每一个字节为0~255之间的整数,即我们日常见到的IP地址格式。
IP数据包格式
在上图通过wireshark捕获的IP数据包里,版本为IPV4,上层传输层使用的协议为UDP,源IP地址为220.165.14.20,目的IP地址为10.139.207.189。
3.TCP报文(传输层)
TCP首部比较复杂,分为两大部分,前20个字节是大小固定的,后面的选项部分大小不固定,首部固定部分各段意义:
1)源端口(Sourceport):
占2个字节,端口号的范围从0到65535,例如80端口分配给浏览网页服务(HTTP),21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议),大多数TCP/IP实现给临时端口号分配1024~5000之间的端口号
2)目的端口(Destinationport):
占2个字节
3)序列号(Sequencenumber):
占4个字节,TCP传送的是面向连接的连续的数据流,所传送的数据每一个字节都编上一个序号,首部的这个序列号指的是本报文段所发送的数据的第一个字节的序列号
4)确认号(Acknowledgementnumber):
占4个字节,是期望收到对方的下一个报文段的数据的第一个字节的序列号,也就是期望收到的下一个报文段首部的序号字段的值
5)首部长度(Headerlength):
占4位,是指TCP报文段首部的长度,由于存在长度不确定的选项字段,所以此值最小为20字节,最大为60字节
6)保留(Reserved):
占6位,目前没用,设为0
7)标志(Flags):
占6位,说明本报文段性质
8)滑动窗口(Windowsizevalue):
占2个字节,用来控制对方发送的数量
9)校验和(Checksum):
占2个字节,校验范围为首部加数据两部分
10)紧急指针(Urgent):
占2个字节
TCP报文格式
在上图通过wireshark捕获的TCP报文里,源端口号为80(http),目的端口号为4943,序列号为34306,确认号为579,滑动窗口大小为63。
4.UDP报文(传输层)
UDP报文比较简单,由四个字段组成,每个字段2个字节,共8字节:
1)源端口号(Sourceport):
占2字节
2)目的端口号(Destinationport):
占2字节
3)长度(Length):
占2字节,表示用户数据的长度
4)校验和(Checksum):
占2字节
UDP报文格式
在上图通过wireshark捕获的UDP报文里,源端口号为11530,目的端口号为5092(magpie),数据长度为642。
四.TCP/IP模型各层常见协议
TCP/IP模型各个层次的功能和协议
层次名称
功 能
协 议
应用层
(ApplicationLayer)
负责实现一切与应用程序相关的功能,对应OSI参考模型的上三层
FTP(文件传输协议)
HTTP(超文本传输协议)
DNS(域名服务器协议)
SMTP(简单邮件传输协议)
NFS(网络文件系统协议)
传输层
(TransportLayer)
负责提供可靠的传输服务,对应OSI参考模型的第四层
TCP(控制传输协议)
UDP(用户数据报协议)
网际层
(InternetLayer)
负责网络间的寻址
数据传输,对应OSI参考模型的第三层
IP(网际协议)
ICMP(网际控制消息协议)
ARP(地址解析协议)
RARP(反向地址解析协议)
网络接口层
(NetworkAccessLayer)
负责实际数据的传输,对应OSI参考模型的下两层
HDLC(高级链路控制协议)
PPP(点对点协议)
SLIP(串行线路接口协议)
1.PPP(网络接口层协议)
PPP(Point-to-PointProtocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。
这种链路提供全双工操作,并按照顺序传递数据包。
设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
1)PPP链路建立过程
PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。
PPP协议包含这样几个部分:
链路控制协议LCP(LinkControlProtocol);网络控制协议NCP(NetworkControlProtocol);认证协议,最常用的包括口令验证协议PAP(PasswordAuthenticationProtocol)和挑战握手验证协议CHAP(Challenge-HandshakeAuthenticationProtocol)。
LCP负责创建,维护或终止一次物理连接。
NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。
一个典型的PPP链路建立过程分为三个阶段:
创建阶段、认证阶段和网络协商阶段。
阶段1:
创建PPP链路
LCP负责创建链路。
在这个阶段,将对基本的通讯方式进行选择。
链路两端设备通过LCP向对方发送配置信息报文(ConfigurePackets)。
一旦一个配置成功信息包(Configure-Ackpacket)被发送且被接收,就完成了交换,进入了LCP开启状态。
应当注意,在链路创建阶段,只是对验证协议进行选择,用户验证将在第2阶段实现。
阶段2:
用户验证
在这个阶段,客户端会将自己的身份发送给远端的接入服务器。
该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。
在认证完成之前,禁止从认证阶段前进到网络层协议阶段。
如果认证失败,认证者应该跃迁到链路终止阶段。
在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被允许的。
在该阶段里接收到的其他的packets必须被静静的丢弃。
最常用的认证协议有口令验证协议(PAP)和挑战握手验证协议(CHAP)。
阶段3:
调用网络层协议
认证阶段完成之后,PPP将调用在链路创建阶段(阶段1)选定的各种网络控制协议(NCP)。
选定的NCP解决PPP链路之上的高层协议问题,例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态地址。
阶段4:
拆除线路
在通信结束后拆除线路
2)认证方式
a)口令验证协议(PAP)
PAP是一种简单的明文验证方式。
NAS(网络接入服务器,NetworkAccessServer)要求用户提供用户名和口令,PAP以明文方式返回用户信息。
这种验证方式的安全性较差,第三方可以很容易的获取被传送的用户名和口令,并利用这些信息与NAS建立连接获取NAS提供的所有资源。
所以一旦用户密码被第三方窃取,PAP无法提供避免受到第三方攻击的保障措施。
b)挑战-握手验证协议(CHAP)
CHAP是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。
NAS向远程用户发送一个挑战口令(challenge),其中包括会话ID和一个任意生成的挑战字串(arbitrarychallengestring)。
远程客户必须使用MD5单向哈希算法(one-wayhashingalgorithm)返回用户名和加密的挑战口令,会话ID以及用户口令,其中用户名以非哈希方式发送。
CHAP对PAP进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以哈希算法对口令进行加密。
因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的操作,并将结果与用户返回的口令进行对照。
CHAP为每一次验证任意生成一个挑战字串来防止受到再现攻击(replayattack)。
在整个连接过程中,CHAP将不定时的向客户端重复发送挑战口令,从而避免第3方冒充远程客户(remoteclientimpersonation)进行攻击。
3)PPP协议的应用
PPP协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力、可以解决IP分配等。
通过PSTN拨号上网就是通过PPP在用户端和运营商的接入服务器之间建立通信链路。
目前,宽带接入正在成为取代拨号上网的趋势,在宽带接入技术日新月异的今天,PPP也衍生出新的应用。
典型的应用是在ADSL(非对称数据用户环线,AsymmetricalDigitalSubscriberLoop)接入方式当中,PPP与其他的协议共同派生出了符合宽带接入要求的新的协议,如PPPoE(PPPoverEthernet),PPPoA(PPPoverATM)。
利用以太网资源,在以太网上运行PPP来进行用户认证接入的方式称为PPPoE。
PPPoE即保护了用户方的以太网资源,又完成了ADSL的接入要求,是目前ADSL接入方式中应用最广泛的技术标准。
同样,在ATM(异步传输模式,AsynchronousTransferMode)网络上运行PPP协议来管理用户认证的方式称为PPPoA。
它与PPPoE的原理相同,作用相同;不同的是它是在ATM网络上,而PPPoE是在以太网网络上运行,所以要分别适应ATM标准和以太网标准。
2.TCP(传输层协议)
传输控制协议(TransmissionControlProtocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
在OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是网际层不提供这样的流机制,而是提供不可靠的包交换。
应用层向传输层发送用于网间传输的数据流,然后TCP把数据流分区成适当长度的报文段。
之后TCP把结果包传给网际层,由它来通过网络将包传送给接收端实体的传输层。
TCP为了保证不发生丢包,就给每个字节一个序列号,同时序列号也保证了传送到接收端实体的包的按序接收。
然后接收端实体对已成功收到的字节回一个相应的ACK,如果发送端实体在合理的往返时延内未收到ACK,那么对应的数据(假设丢失了)将会被重传。
TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。
1)TCP连接建立和连接终止
连接建立包含了我们常说的TCP三次握手的过程。
当“服务器回应了浏览器的请求,并要求确认”的时候,如果浏览器没有正常的确认,服务器就会在SYN_RECV状态等下去,直到超时。
如果恶意程序伪造了大量类似的请求,那就是常说的SYN洪水攻击了。
连接终止则使用了4次握手的过程,在这个过程中每个终端的连接都能独立地被终止。
因此一个典型的拆接过程需要每个终端都提供一对FIN和ACK。
FIN的字面意思是连接一方再也没有更多新的数据要发送,但是那些重传的数据还会被传送。
2)TCP确认机制
3)TCP序列号和确认号
4)TCP滑动窗口
5)TCP重传
a)发端计时器超时
TCP每发送一个报文段,就对这个报文段设置一次定时器。
当定时器超时而没有收到确认时,就重传该报文。
原来报文哪去了呢?
两种可能:
1)在路上丢失了。
2)还在路上,走的慢。
对于第一种情况:
接收端是不知情的,而对于第二种情况,接收端表现为收到两个一摸一样的报文。
b)快重传
就是说在发送端一连收到3个重复的ACK时,认为已经发生了数据包丢失,就立即重传相应的报文而不等到定时器超时,称为TCP快重传。
五.实际用例分析
1.HTTP连接和关闭
打开浏览器随便浏览一个网页,就会得到类似下面的结果,浏览的是Google的页面。
这里211.100.209.50是浏览器,66.249.89.147就是服务器。
下面具体解释一下这个HTTP连接过程:
--------------------------------------------------------------
浏览器向服务器发出连接请求。
(发SYN,第1次握手)
服务器回应了浏览器的请求,并要求确认。
(回SYN/ACK,第2次握手)
浏览器回应了服务器的确认,连接成功。
(发ACK,第3次握手)
浏览器发出一个页面HTTP请求。
服务器确认。
服务器发送数据。
客户端确认。
服务器响应了一个200状态,表示成功。
客户端发出一个图片HTTP请求。
服务器响应了一个304HTTP头,告诉浏览器别打扰它,直接用缓存。
客户端又发出一个图片HTTP请求。
服务器还是响应了一个304HTTP头。
浏览器确认。
服务器准备关闭连接,并要求确认。
(发FIN,第1次握手)
浏览器确认。
(回ACK,第2次握手)
浏览器准备关闭连接,并要求确认。
(发FIN,第3次握手)
服务器确认。
(回FIN,第4次握手)
2.TCP快重传和重传
静止点HSUPA邮箱上传,中间断流25秒,上行链路发送异常或网侧数据接收异常导致发生TCP快重传和大量的TCP重传。
下面是协议栈的分析。
首先断流的这段期间至少发生这么多次Reset,都是网侧发送来的Reset(UE都立刻发送ResetACK)。
而且网侧发送来较多的NACK,可见上行链路的发送有异常。
其次PHY上UPARlcPduCnt的变化图,在SFN62252到SFN62433期间RlcPduCnt=0较多。
推测是网侧对UE侧发送的数据接收异常,导致TCP窗口滑不动,从而RLC没有数据了。
因为没有收到下行的ACK,TCP窗口滑不动后,定时器会超时,会进行TCP重传。
下面分析下图的wireshark抓包。
UE的IP地址为10.153.94.3,网侧邮箱的IP地址为120.198.188.26。
No.4986,4991和4992网侧连续三次发送了相同的ACK,都是要求UE侧发送序列号为3962267的TCP报文,UE侧判断此报文丢失,不等到定时器超时,就在No.4993立即进行了TCP快重传(TCPFastRetransmission)。
之后定时器超时,开始进行序列号3962267后面的TCP报文的TCP重传(TCPRetransmission)。
一直到No.5036网侧才回复了不同的ACK,要求UE侧发送序列号为3963687的TCP报文,说明网侧已经收到序列号为3962267的TCP报文。
之后网侧又回复了大量相同的ACK,UE侧也在一直不停地进行TCP重传。
可见上行链路或者网侧接收发生了问题,下行能收到大量相同的ACK,说明下行链路不存在问题。
由于多次较长时间等待ACK,例如No.4986和4991之间就隔了三秒多,TCP窗口无法滑动,导致RLC没有数据可发,所以出现较多的RlcPduCnt=0。
3.常见上传下载方式使用的协议
1)网页另存:
HTTP/TCP,端口号80,单下载
2)FileZilla上传或下载:
FTP/TCP,端口号默认21,也可以是其他未占用的端口号,单上传/单下载
3)QQ邮箱上传:
HTTP/TCP,端口号80,单上传
4)优酷和土豆:
TCP,采用P2P加速工具时为UDP,单下载或同时上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通过 Wireshark 学习 TCPIP 协议 分析 PS 业务 要点
![提示](https://static.bdocx.com/images/bang_tan.gif)