数据包头格式
IP包头格式

IP包头格式*版本(version)——标识了数据包的IP版本号。
这个4位字段的值设置为二进制的0100表示IP版本4(IPv4),设置为0110表示IP版本6(IPv6)。
*报头长度(header length)——字段长度为4位,正如字段名所示,它表示32位字长的IP 报头长度。
设计报头长度字段是因为数据包的可选项字段的大小会发生变化。
IP报头最小长度为20个八位组,最大可以扩展到60个八位组——通过这个字段也可以描述32位字的最大长度。
*服务类型(TOS,type of service)——字段长度为8位,它用来指定特殊的数据包处理方式。
服务类型字段实际上被划分为两个子字段:优先级和ToS。
优先级用来设置数据包的优先级,这就像邮寄包裹一样,可以是平信、隔日送到或两日内送到。
ToS允许按照吞吐量、时延、可靠性和费用方式选择传输服务。
虽然ToS字段通常不用(所有位均被设置为0),但是开放式最短路径优先(OSPF)协议的早期规范中还是称为ToS路由选择。
优先权位偶尔在服务质量(QoS)应用中使用。
更详细的信息可以参见RFC1340和RFC1349。
*总长度(total length)——数据包总长度字段的长度为16位,以八位组为单位计,其中包括IP报头。
接收者用IP数据包总长度减去IP报头长度,就可以确定数据包数据有效负载的大小。
16位长的二进制数用十进制表示最大可以为65535,所以IP数据包的最大长度是65535。
*标识符(identifier)——字段长度为16位,通常与标记字段和分片偏移字段一起用于数据包的分段。
如果数据包原始长度超过数据包所要经过的数据链路的最大传输单元(MTU),那么必须将数据包分段为更小的数据包。
例如,一个大小为5000字节的数据包在穿过网络时,如果遇到一条MTU为1500字节的数据链路,即数据帧最多容纳大小为1500字节的数据包。
路由器需要在数据成帧之前将数据包分段成多个数据包,其中每个数据包长度不得超过1500字节;然后路由器在每片数据包的标识字段上打上相同的标记,以便接收设备可以识别出属于一个数据包的分段。
IP包格式详解

工作原理:当IP包在传输过程中遇到问题时,如目的不可达、路由问题等,源主机发 送ICMP报文给路由器或目的主机,帮助诊断和解决问题。
主要功能:ICMP提供了一些重要的诊断工具,如ping命令,用于测试主机之间的连 通性。
IP包安全防护措施
使用加密技术 保护IP包内容, 防止数据被窃
取或篡改
部署防火墙, 限制非法访问
和恶意攻击
定期更新和升 级操作系统、 应用程序和安 全设备,以修
复安全漏洞
实施安全审计 和日志记录, 监控网络流量
和异常行为
加密技术应用
加密技术可以保护IP包的内容,防止数据被窃取或篡改 常见的加密技术包括对称加密和公钥加密 对称加密使用相同的密钥进行加密和解密,常见的对称加密算法有AES和DES 公钥加密使用不同的密钥进行加密和解密,常见的公钥加密算法有RSA和ECC
严格源路由:用于 指定数据包必须经 过特定的路径到达 目的主机
选项长度
长度范围:0-40字节 选项字段的长度不固定,取决于具体选项的长度和数量 选项字段长度必须为4字节的整数倍 选项字段长度不足时,需要填充0字节
选项内容
选项类型:标识IP选项的类型, 如路由器警告、时间戳等
选项长度:IP选项的长度,以 32位为单位
IP包重组的过程
IP包到达接收端
接收端检查IP包的头部信 息
根据头部信息,将IP包放 入重组缓冲区
按照IP包的序号进行排序, 完成重组
IP包安全问题与 防护措施
IP包面临的安全威胁
篡改数据:攻击者可以修改IP包中的数据,导致数据丢失或损坏 窃取信息:攻击者可以截获IP包中的敏感信息,如账号密码等 拒绝服务:攻击者可以发送大量的垃圾IP包,导致网络拥堵,影响正常通信 恶意软件传播:攻击者可以利用IP包传播病毒、木马等恶意软件
IP包头的格式

20 字 节
可选项 数据
TCP的封装格式
0 15 16 31
源端口号
目标端口号
32位序列号 发送TCP进程 进程 发送 目标端接收进 对应的端口号 32位确认号 ~ 232-1范围内程的端口号 0 范围内, 范围内,数据段 U A P R S F 4位 标记,32-1范围内,对发送 0~2 范围内, 标记,用于到目的端对到 范围内 保留 达包的重组 ,告诉发送端 端的确认信息, 端的确认信息 16位窗口大小 首部 (6位) R C S S Y I 这个序号之前的数据段都收 长度 G K H T N N 到了 滑动窗口的大小, 16位校验和 ,与 为1时,数据发 滑动窗口的大小, 紧急指针有效位, 16位紧急指针 紧急指针有效位 确认序列号有 指明本地可接收数 通知接收端立即将数 时 时 时 16位紧急指针配合使 16位紧急指针配合使 ,请求建 为 效位,为1时,请求重 效位,表明该 1时 据提交给用户进程, 据提交给用户进程, 请求断 据的字节数 送完毕, 送完毕 新建立TCP连接 , 新建立 可选项 用 数据包包含确 立连接连接 不在缓存中停留, 不在缓存中停留,等 开连接 认信息 数据) 度(4) 型(8) 标志 标识符(16) , 优先级与服务类 IP包头部长度 包头部长度, 包头部长度 版本字段, 版本字段,IP v4 (3) 总长度(16) 段偏移量(13)
IP数据总长度 数据总长度
提供3层的 因为长度可变, 型,提供 层的 因为长度可变, TTL(8) 因此需要定义 QoS 协议号(8) 首部校验和(16) 上层来的数据到IP层会被分段 层会被分段, 上层来的数据到 层会被分段,这几 个字段用来对数据包进行标识, 个字段用来对数据包进行标识,使在 生命周期字段, 生命周期字段,经过一个 源地址(32) 数据到达目的端重组的时候, 数据到达目的端重组的时候,不会乱 路由器值减1, 协议字段, 0时,数 路由器值减 ,为协议字段,用来标识封 时 序 装的上层数据是UDP还 装的上层数据是 还 据包丢弃。 据包丢弃。为了防止一个 目标地址(32) 是TCP, , 是 , 数据包在网络中无限的循 UDP是17, TCP是6 是 环下去。 环下去。
srt协议格式

srt协议格式SRT协议格式SRT(Secure Reliable Transport)是一种用于视频传输的开放源代码协议。
它提供了安全可靠的视频传输解决方案,适用于各种网络环境和应用场景。
本文将介绍SRT协议的格式和特点,并探讨其在视频传输领域的应用。
一、SRT协议概述SRT协议是一种基于UDP协议的可靠传输协议。
它通过添加额外的错误校验、重传机制和加密保护,增强了视频传输的稳定性和安全性。
SRT协议使用了一种称为“SRT包”的数据单元进行传输,每个SRT包包含了数据负载和相关的控制信息。
二、SRT协议格式1. SRT包头部:SRT包头部包含了一系列的控制信息,用于指示发送端和接收端的状态。
其中包括SRT包的序列号、时间戳、数据长度等信息。
2. SRT包数据:SRT包数据部分是实际的视频数据,它可以是视频帧、音频帧或其他媒体数据。
SRT协议并不限制数据的格式,可以适应各种编码方式和媒体类型。
3. SRT包尾部:SRT包尾部包含了一系列的错误校验码和加密信息,用于保证数据的完整性和安全性。
SRT协议使用了强大的FEC(Forward Error Correction)纠错码和AES加密算法,有效地防止了数据的丢失和篡改。
三、SRT协议特点1. 高可靠性:SRT协议通过重传机制和FEC纠错码,可以在不可靠的网络环境下保证视频数据的可靠传输。
即使在网络丢包或延迟较大的情况下,SRT协议仍可以提供稳定的视频传输服务。
2. 低延迟:SRT协议通过优化传输算法和数据压缩技术,可以有效地降低视频传输的延迟。
这对于实时视频应用非常重要,如视频会议、直播等。
3. 安全性保障:SRT协议支持数据加密和身份验证机制,可以保护视频数据的隐私和安全。
通过使用AES加密算法和数字证书,SRT 协议可以防止数据的非法访问和篡改。
四、SRT协议应用1. 在直播领域,SRT协议可以提供高质量、可靠的视频传输服务。
无论是体育赛事直播、新闻报道还是在线教育,SRT协议都可以满足高清视频传输的要求。
pcap文件格式

PCAP文件格式每个.pcap文件的文件头Pcap Header:24B每个.pcap文件中的数据包头 Packet Header:16B每个.pcap文件中的数据报 Packet Data:14B以太头+TCP/IP数据具体如下:1.pcap文件头部(pcap header)sturct pcap_file_header{DWORD magic;WORD version_major;WORD version_minor;DWORD thiszone;DWORD sigfigs;DWORD snaplen;DWORD linktype;}说明:1、标识位magic:32位的,这个标识位的值是16进制的 0xa1b2c3d4。
32-bit magic number , The magic number has the value hex a1b2c3d4.2、主版本号version_major:16位,默认值为0x2。
返回写入被打开文件所使用的pcap函数的主版本号。
16-bit major version number, The major version number should have the value 2.3、副版本号version_minor:16位,默认值为0x04。
16-bit minor version number, The minor version number should have the value 4.4、区域时间thiszone:32位,实际上该值并未使用,因此可以将该位设置为0。
32-bit time zone offset field that actually not used, so you can (and probably should) just make it 0;5、精确时间戳sigfigs:32位,实际上该值并未使用,因此可以将该值设置为0。
IP数据包格式

IP数据包格式IP数据包格式TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报(IP Datagram)。
这是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式如图所示。
首部的前一部分是固定长度,共20字节,是所有IP 数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的。
首部中的源地址和目的地址都是IP协议地址1、IP数据报首部的固定部分中的各字段(1)版本占4位,指IP协议的版本。
通信双方使用的IP协议版本必须一致。
目前广泛使用的IP协议版本号为4(即IPv4)。
(2)首部长度占4位,可表示的最大十进制数值是15。
请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。
当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。
首部长度限制为60 字节的缺点是有时可能不够用。
但这样做是希望用户尽量减少开销。
最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(#我们一般看到的版本和首部长度两个字段是十六进制45,就是版本号version=4,headlength=5,也就是首部长度是60个字节)(3)区分服务占8位,用来获得更好的服务。
这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。
1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。
只有在使用区分服务时,这个字段才起作用。
(4)总长度总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
#可以看这个以太网frame总长为336字节,而IP数据包Total length=322,336-322=14正好是Ethernet包头的长度,所以就可以看出这IP数据包总长度一值就是除去Ethernet头的剩余长度,也就是IP包头加数据的长度。
IP包头

IP包头(Packet Header)的格式版本(version):长度4比特,表示数据包的IP版本号,0x0100表示IP版本4,0x0110表示IP版本6报头长度(header lenght):长度4比特,表示IP包头长度,最小长度为20个字节,最大可以扩展到60个字节。
服务类型(Type of service):长度8比特,表示特殊数据包的处理方式。
服务类型字段实际上被划分为两个子字段:优先级和ToS。
总长度(Total Length):长度16比特,表示IP包的长度(包头+数据),所以IP 数据包的最大长度是65535(2^16)。
标识符(Identifier):长度16比特,通常与标记字段和分片偏移字段一起用于数据包的分段。
如果数据包原始长度超过数据包所要经过的数据链路的最大传输单元(MTU),那么必须将数据包分段为更小的数据包。
例如,一个大小为5000字节的数据包在穿过网络时,如果遇到一条MTU为1500字节的数据链路,即数据帧最多容纳大小为1500字节的数据包。
路由器需要在数据成帧之前将数据包分段成多个数据包,其中每个数据包长度不得超过1500字节;然后路由器在每片数据包的标识字段上打上相同的标记,以便接收设备可以识别出属于一个数据包的分段。
标记字段(Flag):长度3比特,其中第1位不使用,第2位是不分段(DF)位。
当DF位被设置为1时,表示路由器不能对数据包进行分段处理。
如果数据包由于不能被分段而未能被转发,那么路由器将丢弃该数据包并向源点发送错误消息。
第3位表示还有更多分段(MF)位,当路由器对数据包进行分段时,MF位为1,说明后面还有分段;MF位为0,说明这是最后一个分段。
分段偏移(Fragment Offset):长度13比特,表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包。
请注意,如果一个分片在传输中丢失,那么必须在网络中同一点对整个数据包重新分片重新发送。
TCP包头格式详解

TCP包头格式详解⼀般来说,⽹络编程我们只需要调⽤⼀些封装好的函数或者组件就能完成⼤部分的⼯作,但是⼀些特殊的情况下,就需要深⼊的理解⽹络数据包的结构,以及协议分析。
如:⽹络监控,故障排查等……IP包是不安全的,但是它是互联⽹的基础,在各⽅⾯都有⼴泛的应⽤。
由IP协议衍⽣的协议族有10数种(据我所知),以后还会出现更多的基于IP的协议…先从实际出发吧!⼀般我们在谈上⽹速度的时候,专业上⽤带宽来描述,其实⽆论说⽹速或者带宽都是不准确的,呵呵。
⽐如:1兆,512K……有些在学校的学⽣,也许会有疑问,明明我的业务是1M,为什么下载速度到100K就飙不上去了?512K的为什么50多K就封顶了?…这⾥所说的1M是指1Mbps = 1 Million Bits Per Second,也就是1M⽐特每秒,即⼀秒钟传输1048576个⼆进制位。
我们知道⼀个字节是8个⼆进制位。
好,⼜来问题了。
即便这样⼦,1M=1048756÷8=131072÷1024=128K。
那也应该有128K啊,为什么下载速度还是很少到120K,110K都谢天谢地了。
看完本⽂,你的帐就对了……IP数据包结构:如图,⼀个刻度表⽰1个⼆进制位(⽐特)。
1-1.版本4位,表⽰版本号,⽬前最⼴泛的是4=B1000,即常说的IPv4;相信IPv6以后会⼴泛应⽤,它能给世界上每个纽扣都分配⼀个IP地址。
1-2.头长4位,数据包头部长度。
它表⽰数据包头部包括多少个32位长整型,也就是多少个4字节的数据。
⽆选项则为5(红⾊部分)。
1-3.服务类型,包括8个⼆进制位,每个位的意义如下:过程字段:3位,设置了数据包的重要性,取值越⼤数据越重要,取值范围为:0(正常)~ 7(⽹络控制)延迟字段:1位,取值:0(正常)、1(期特低的延迟)流量字段:1位,取值:0(正常)、1(期特⾼的流量)可靠性字段:1位,取值:0(正常)、1(期特⾼的可靠性)成本字段:1位,取值:0(正常)、1(期特最⼩成本)保留字段:1位,未使⽤1-4.包裹总长16位,当前数据包的总长度,单位是字节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、TCP报头TCP报文段的报头有10个必需的字段和1个可选字段。
报头至少为20字节。
报头后面的数据是可选项。
1、源端口号(16位)标识发送报文的计算机端口或进程。
一个TCP报文段必须包括源端口号,使目的主机知道应该向何处发送确认报文。
2、目的端口号(16位)标识接收报文的目的主机的端口或进程。
3、序列号(32位)用于标识每个报文段,使目的主机可确认已收到指定报文段中的数据。
当源主机用于多个报文段发送一个报文时,即使这些报文到达目的主机的顺序不一样,序列号也可以使目的主机按顺序排列它们。
在建立连接时发送的第一个报文段中,双方都提供一个初始序列号。
TCP 标准推荐使用以4ms间隔递增1的计数器值作为这个初始序列号的值。
使用计数器可以防止连接关闭再重新连接时出现相同的序列号。
对于那些包含数据的报文段,报文段中第一个数据字节的数量就是初始序列号,其后数据字节按顺序编号。
如果源主机使用同样的连接发送另一个报文段,那么这个报文段的序列号等于前一个报文段的序列号与前一个报文段中数据字节的数量之和。
例如,假设源主机发送3个报文段,每个报文段有100字节的数据,且第一个报文段的序列号是1000,那么第二个报文段的序列号就是1100(1000+100),第三个报文段的序列号就是1200(1100+100)。
如果序列号增大至最大值将复位为0。
4、确认号(32位)目的主机返回确认号,使源主机知道某个或几个报文段已被接收。
如果ACK控制位被设置为1,则该字段有效。
确认号等于顺序接收到的最后一个报文段的序号加1,这也是目的主机希望下次接收的报文段的序号值。
返回确认号后,计算机认为已接收到小于该确认号的所有数据。
例如,序列号等于前一个报文段的序列号与前一个报文段中数据字节的数量之和。
例如,假设源主机发送3个报文段,每个报文段有100字节的数据,且第一个报文段的序列号是1000,那么接收到第一个报文段后,目的主机返回含确认号1100的报头。
接收到第二个报文段(其序号为1100)后,目的主机返回确认号1200。
接收到第三个报文段后,目的主机返回确认号1300。
目的主机不一定在每次接收到报文段后都返回确认号。
在上面的例子中,目的主机可能等到所有3个报文段都收到后,再返回一个含确认号1300的报文段,表示已接收到全部1200字节的数据。
但是如果目的主机再发回确认号之前等待时间过长,源主机会认为数据没有到达目的主机,并自动重发。
上面的例子中,如果目的主机接收到了报文段号为1000的第一个报文段以及报文段号为1200的最后一个报文段,则可返回确认号1100,但是再返回确认号1300之前,应该等待报文段号为1100的中间报文段。
5、报文长度(4位)由于TCP报头的长度随TCP选项字段内容的不同而变化,因此报头中包含一个指定报头字段的字段。
该字段以32比特为单位,所以报头长度一定是32比特的整数倍,有时需要在报头末尾补0。
如果报头没有TCP选项字段,则报头长度值为5,表示报头一个有160比特,即20字节。
6、保留位(6位)全部为0。
7、控制位(6位)URG:报文段紧急。
ACK:确认号有效。
PSH:建议计算机立即将数据交给应用程序。
RST:复位连接。
SYN:进程同步。
在握手完成后SYN为1,表示TCP建立已连接。
此后的所有报文段中,SYN都被置0。
FIN:源主机不再有待发送的数据。
如果源主机数据发送完毕,将把该连接下要发送的最后一个报文段的报头中的FIN位置1,或将该报文段后面发送的报头中该位置1。
8、窗口(16位)接收计算机可接收的新数据字节的数量,根据接收缓冲区可用资源的大小,其值随计算机所发送的每个报文段而变化。
源主机可以利用接收到的窗口值决定下一个报文段的大小。
9、校验和(16位)源主机和目的主机根据TCP报文段以及伪报头的内容计算校验和。
在伪报头中存放着来自IP报头以及TCP报文段长度信息。
与UDP一样,伪报头并不在网络中传输,并且在校验和中包含伪报头的目的是为了防止目的主机错误地接收存在路由的错误数据报。
10、紧急指针(16位)如果URG为1,则紧急指针标志着紧急数据的结束。
其值是紧急数据最后1字节的序号,表示报文段序号的偏移量。
例如,如果报文段的序号是1000,前8个字节都是紧急数据,那么紧急指针就是8。
紧急指针一般用途是使用户可中止进程。
11、TCP选项(0或更大)完整的TCP报头必须是32比特的整数倍,为了达到这一要求,常在TCP 选项字段的末尾补零。
12、数据部分报头后面是可选的报文段数据部分。
IP协议标准要求株距能接收最长达576字节的数据报。
无其他选项的IP报头是20字节,无其他选项的TCP报头也是20字节,所以IP选项和TCP选项且含有多达536字节数据的TCP报文段无须分片就可达到目的主机。
二、UDP报头由4个域组成,其中每个域各占用2个字节,具体为:源端口号目标端口号数据报长度校验值UDP协议使用端口号为不同的应用保留其各自的数据传输通道数据报的长度是指包括报头和数据部分在内的总的字节数。
因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)UDP协议使用报头中的校验值来保证数据的安全。
校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。
且udp必须要有校验值i贴吧新浪微博腾讯微博QQ空间人人网豆瓣MS N9回答时间:2009-4-9 19:25 |我来评论\FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)FTP是仅基于TCP的服务,不支持UDP。
与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。
通常来说这两个端口是 21(命令端口)和20(数据端口)。
但FTP 工作方式的不同,数据端口并不总是20。
这就是主动与被动FTP的最大不同之处。
(一)主动FTP主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。
然后客户端开始监听端口 N+1,并发送FTP命令“port N+1”到FTP服务器。
接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:1. 任何大于1024的端口到FTP服务器的21端口。
(客户端初始化的连接)2. FTP服务器的21端口到大于1024的端口。
(服务器响应客户端的控制端口)3. FTP服务器的20端口到大于1024的端口。
(服务器端初始化数据连接到客户端的数据端口)4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)(二)被动FTP为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。
这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。
第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。
这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P 命令给客户端。
然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:1. 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)2. 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)3. 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)以上关于主动和被动FTP的解释,可以简单概括为以下两点:1、主动FTP:命令连接:客户端 >1024端口 -> 服务器 21端口数据连接:客户端 >1024端口 1024端口 -> 服务器 21端口数据连接:客户端 >1024端口 -> 服务器 >1024端口(三)主动与被动FTP优缺点:主动FTP对FTP服务器的管理有利,但对客户端的管理不利。
因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。
因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
Http访问过程原理2010-06-27 15:55:44标签:访问Http原理原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/509018/339906很简单的一个东西,咱们慢慢来分析一下,首先,看一下拓扑图:假如主机A要访问网站:www.baidu.co m时,主机A会立即封装一个HTTP的报文,按照TCP/IP的模型,应该是是:二层报文+IP报文+TCP报文+HTTP报文,也就是:数据链接路+网络层+传输层+应用层…但是主机A在封装的过程中,发现是个域名,主机A不知道的IP地址,于是他需要先生成一个DNS的解析报文,也就是:二层报文+IP报文+TCP报文+DNS报文....可是主机A在封装的过程中,发现如果要解释DNS,必须得与DNS联系,而DNS的IP是:202.96.134.133,他与DNS联系时又不知道它的MAC地址,而且很明显与自己不在同一网段,于是得请求网关转发DNS,周时主机A也不知道网关的MAC地址时,就需要向外广播一条ARP消息,并得到了路由器的MAC地址….然后请求网关转发DNS报文给202.96.134.133….所以正个过程也就是这样:先ARP得到网关MAC,再请求网关转发DNS报文,得到 ip是: 121.14.89.10再与www.baidu.co m建立TCP/IP连接最后再开始传输HTTP报文用wiershark抓包是,大致过程就是这样(因为开了360,所以里面有两个360的广告新闻DNS,忽略它):既然咱们能抓到包,那么我们就一个一个来分析报文的过程:第一步:得到arp网关的M AC报文是这样的:ARP的报文格式:按报文内容填充就是这样的:一个请求,一个响应:请求:响应:第二步:再请求网关转发DN S报文,得到 ip是: 121.14.89.10,(在这里,实际上用了UPD的连接,因不是本文重点,且UPD报文格式简单,在这里就不详细说了。