ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:207.09KB ,
资源ID:17015216      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17015216.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(HTTP协议基础及TCPIP协议解析Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

HTTP协议基础及TCPIP协议解析Word文档格式.docx

1、(6)Web服务器向浏览器发送数据Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据(7)Web服务器关闭TCP连接一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码Connection:keep-aliveTCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。HTTP请求格式当浏览器向Web服务器发出请求时,它向服务器

2、传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:l请求方法URI协议/版本请求头(Request Header)请求正文FOR EXAMPLE:GET/sample.jspHTTP/1.1Accept:image/gif.image/jpeg,*/*Accept-Language:zh-cnKeep-AliveHost:localhostUser-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)Accept-Encoding:gzip,deflateusername=jinqiao&password=1234请求的第一行是“方

3、法URL议/版本”:GET/sample.jsp HTTP/1.1以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。根据HTTP标准,HTTP请求可以使用多种请求方法。HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。(2)请求头(Request Header)请

4、求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。image/gif.image/jpeg.*/*Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)gzip,deflate.(3)请求正文请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。HTTP请求方法我这里只讨论GET方法与POST方法GET方法GET方法

5、是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如Http:/127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大POST方法POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量

6、的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERYSTRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。TCP通信流程解析B/S通信简述整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet的核心协议,HTTP协议是比TCP更高层次的应用层协议。HTTP(Hype

7、rText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。浏览器(Web Browser)负责与服务器建立连接,下载网页(包括资源文件及JS脚本文件)到本地,并最终渲染出页面。JS脚本文件运行在客户端,负责客户端一些行为响应或预处理,例如提交表单前的数据校验、鼠标事件处理等交互。由此可见,浏览器(Browser)一方面充当了C/S通信架构中C角色,另一方面它是HTML/JavaScript的解析渲染引擎(Analyze Render Engine)。当在

8、浏览器地址栏敲入“MTU和MSS本文用到的抓包工具为wireshark,它的前身是赫赫有名的Ethereal。wireshark以太网帧的封包格式为:-Frame=Ethernet Header+IP Header+TCP Header+TCP Segment Data(1)Ethernet Header=14Byte =Dst Physical Address(6 Byte)+Src Physical Address(6 Byte)+Type(2 Byte),以太网帧头以下称之为数据帧。(2)IP Header=20Byte(without options field),数据在IP层称为Da

9、tagram,分片称为Fragment。(3)TCP Header=20Byte(without options field),数据在TCP层称为Stream,分段称为Segment(UDP中称为Message)。(4)54个字节后为TCP数据负载部分(Data Portion),即应用层用户数据。Ethernet Header以下的IP数据报最大传输单位为MTU(Maximum Transmission Unit,Effect of short board),对于大多数使用以太网的局域网来说,MTU=1500。TCP数据包每次能够传输的最大数据分段为MSS,为了达到最佳的传输效能,在建立TC

10、P连接时双方将协商MSS值双方提供的MSS值中的最小值为这次连接的最大MSS值。MSS往往基于MTU计算出来,通常MSS=MTU-sizeof(IP Header)-sizeof(TCP Header)=1500-20-20=1460。这样,数据经过本地TCP层分段后,交给本地IP层,在本地IP层就不需要分片了。但是在下一跳路由(Next Hop)的邻居路由器上可能发生IP分片!因为路由器的网卡的MTU可能小于需要转发的IP数据报的大小。这时候,在路由器上可能发生两种情况:(1)如果源发送端设置了这个IP数据包可以分片(May Fragment,DF=0),路由器将IP数据报分片后转发。(2)

11、如果源发送端设置了这个IP数据报不可以分片(Dont Fragment,DF=1),路由器将IP数据报丢弃,并发送ICMP分片错误消息给源发送端。关于MTU的探测,参考Path MTU discovery。我们可以通过基于ICMP协议的ping命令来探测从本机出发到目标机器上路由上的MTU,详见下文。TCP和UDP在基于传输层(TCP/UDP)的应用开发中,为了最后的程序优化,应避免端到端的任何一个节点上出现IP分片。TCP的MSS协商机制加上序列号确认机制,基本上能够保证数据的可靠传输。UDP协议在IP协议的基础上,只增加了传输层的端口(Source Port+Destination Por

12、t)、UDP数据包长(Length = Header+Data)以及检验和(Checksum)。因此,基于UDP开发应用程序时,数据包需要结合IP分片情况考虑。对于以太局域网,往往取UDP数据包长Length http SYN Seq=0 Win=65535 Len=0 MSS=1460SACK_PERM=12220.181.6.175:80192.168.89.125:5672 TCP 62http amqp SYN, ACK Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 SACK_PERM=13TCP 54 http ACK Seq=1 Ack=1 Win=655

13、35 Len=0*/三次握手建立TCP连接的流程如下:C(Browser)S()1.CLOSEDLISTEN2.SYN-SENTSYN-RECEIVED3.ESTABLISHEDACK=1CTL=SYN,ACK4.ESTABLISHEDSEQ=1CTL=ACKESTABLISHED3-Way Handshake for Connection Synchronization三次握手的socket层执行逻辑S调用socket的listen函数进入监听状态;C调用connect函数连接S:SYN,S调用accept函数接受C的连接并发起与C方向上的连接:SYN,ACK。C发送ACK完成三次握手,co

14、nnect函数返回;S收到C发送的ACK后,accept函数返回。关于Seq和AckSeq即Sequence Number,为源端(source)的发送序列号;Ack即Acknowledgment Number,为目的端(destination)的接收确认序列号。在Wireshark Display Filter中,可使用tcp.seq或tcp.ack过滤。在Packet1中,C:5672向S:80发送SYN握手包,Seq=0(relativesequence number);在Packet2中,S:80向C:5672发送ACK握手回应包,Ack=1(relativesequence numb

15、er),同时发送SYN握手包,Seq=0(relative在Packet3中,C:80发送ACK握手回应包,Seq=1,Ack=1。至此,Seq=1为C的ISN(Initial Sequence Number),后期某一时刻的Seq=ISN+累计发送量(cumulative sent);Ack=1为C的IAN(Initial Acknowledge Number),后期某一时刻的Ack=IAN+累计接收量(cumulative received)。对于S而言,Seq和Ack情同此理。参考:TCP Analyze Sequence Numbers、Understanding TCP Sequen

16、ce and Acknowledgement Numbers2TCP获取网站数据流程连接建立后,下一步发送(“GET / HTTP/1.1”)请求(Request)HTML页面,这里“/”表示S的默认首页,“GET”为HTTP Request Method;“/”为Request-URI,这里为相对地址;HTTP/1.1表示使用的HTTP协议版本号为1.1。以下为HTTP GET请求数据包(Packet4)。/*480 HTTP 417GET / HTTP/1.1HTTP GET报文长=417-54=363个字节,其中Next sequence number: 364(relative seq

17、uence number)表示,若在规定的时间内收到S响应Ack=364,表明该报文发送成功,可以发送下一个报文(Seq=364);否则重传(TCP Retransmitssion)。序列号确认机制是TCP可靠性传输的保障。S(http)收到HTTP GET报文(共363个字节),向C(amqp)发送TCP确认报文(Packet5)。5805672TCP 60 amqp ACK Seq=1 Ack=364 Win=6432 Len=0这里Seq=1,为S的ISN,意为已发送过SYN。Packet2中,Ack=1为S的IAN。这里的Ack-IAN=364-1=363表示S已经从C接收到363个字

18、节,即HTTP GET报文。同时,Ack=364也是S期待C发送的下一个TCP报文序列号(上面分析的Next sequence number)。接下来,S向C发送Http Response,根据HTTP协议,先发响应头(Response Header),再发XX首页HTML文件。Http Response Header报文(Packet6)如下。6TCP 465TCP segment of a reassembled PDU其部分内容如下:=Content-Length: 2139Content-Type: text/html;charset=gb2312Content-Encoding: g

19、zipS响应C的“GET / HTTP/1.1”请求,先发送带PSH标识的411个字节的Http Response Header(Packet 6)。TCP头部PSH标识置位,敦促C将缓存的数据推送给应用程序,即先处理Http Response Header,实际上是一种“截流”通知。相应C的socket调用send时在IPPROTO_TCP选项级别设置TCP_NODELAY为TRUE禁用Nagle算法可以“保留发送边界”,以防粘连。尽管握手协商的MSS为1460,但服务器或者代理平衡服务器,每次发送过来的TCP数据最多只有1420个字节。可以使用ping -f -l size target_name命令向指定目标target_name发送指定字节量的ICMP报文,其中-l size指定发送缓冲区的大小;-f则表示在IP数据报中设置不分片DF(Dont Fragment),这样便可探测出到目标路径上的MTU。执行“ping -f -l 1452”的结果如下:220.181.6.18的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1