图解HTTP

图解HTTP

HTTP协议的职责(客户端)

生成针对目标web服务器的HTTP请求报文

TCP协议的职责(客户端)

为了方便通信,将HTTP请求报文分割成报文段按序号分成多个报文段,把每个报文段可靠地传给对方

IP协议的职责(路由器)

搜索对方的地址,一边中转一边传送

TCP协议的职责(服务器)

从对方接受到的报文段按序号以原来的顺序重组请求报文

HTTP协议的职责(服务器)

对web服务器请求的内容处理 ,请求的处理结果按照TCP/IP通信协议向用户进行回传

URL(Uniform Resource Identifier)

某个协议方案表示的资源的定位标识符

Uniform

规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式。另外加入新的协议方案如:http、ftp也容易

Resource

资源定义是可标识的如何东西。资源不仅仅是单一的,也可以是多数的集合体。

Identifier

表示可标识的对象,也称为标识符

告知服务器意图的HTTP方法

GET

获得资源,get方法用来请求访问已被URI识别的资源

POST

用来传输实体的主体,虽然GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用post

PUT

传输文件,就像ftp协议的文件上传,要求请求报文的主体中包含文件内容,然后保存在请求URI指定的位置。但是鉴于HTTP/1.1的PUT自身不带有验证机制,任何人都能上传,存在安全问题,因此一般web网站不采用这种方法

HEAD方法和GET方法一样,只是不返回报文主体,用于确认URI的有效性及资源更新的日期时间等

DELETE

和PUT相反的方法,但一般网站不带有验证机制,所以也不使用该方法,当配合web应用程序的验证机制,或遵守REST标准时还是有可能开放使用(PUT同)

OPTIONS

用来查询针对请求URI指定的资源支持的方法

“你支持什么方法”“支持GET和HEAD方法”

TRACE

追踪路径,让web服务器端将之前的请求通信环回给客户端的方法。但是TRACE方法本来不怎么常用,再加上它容易引发XST(Cross Site Tracing,跨站追踪)攻击,通常更不会使用了。

CONNECT

要求使用隧道协议连接代理。要求在与代理服务器通信时建立隧道,实现隧道协议进行TCP通信。主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输 CONNECT方法格式如下

CONNECT 代理服务器名:端口号 HTTP版本

常用内容编码

  1. gzip(GUN zip)
  2. compress(UNIX系统的标准压缩)
  3. deflate(zlib)
  4. identity(不进行编码)

WireShark学习

根据“计算机网络实验.cap”回答以下问题: 1、 第 1 个分组的源物理地址、目标物理地址、源 IP 地址、目的 IP 地址、每层的网络协议 类型、传递的信息内容是怎样的? 2、 第 8 个分组的源物理地址、目标物理地址、源 IP 地址、目的 IP 地址、每层的网络协议 类型、传递的信息内容是怎样的? 3、 第 32 个分组的源物理地址、目标物理地址、源 IP 地址、目的 IP 地址、每层的网络协议 类型、传递的信息内容是怎样的? 4、观察这个记录,以分组 184、73 为例,参考图 2 举例说明 DNS、HTTP 的下层支撑协议。 (重点说明 DNS、HTTP 分别使用那种传输层协议?)

DHCP协议

自动分配方式:DHCP服务器可以为主机分配一个永久性的IP地址。当DHCP客户端第一次从DHCP服务端租用到一个IP地址时,就可以永久性的使用该IP地址。

DHCP(Dynamic Host Configuration Protocol)协议也叫动态主机配置协议,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。(地址池、作用域) 动态分配方式:DHCP服务器为主机分配一个具有时间限制的IP地址,当时间达到限制或者主机主动放弃该地址时,该地址才能被其他主机使用。 手动分配方式:客户端的IP地址由网络管理员指定,DHCP服务器只是将一个指定的IP地址告诉主机。 主要工作原理:DHCP采用UDP发送所有的数据包,主机发送请求到DHCP服务器的68号端口,DHCP服务器再把消息返回给主机的67号端口。

1、源物理地址:00:25:11:4e:02:34,目标物理地址:ff:ff:ff:ff:ff:ff:ff,源ip地址:0.0.0.0,目标ip地址:255.255.255.255 每层协议:Ethernet、IP、UDP、DHCP,传递的内容是让网关分配ip地址

ARP协议

ARP协议(Address Resolution Protocol,地址解析协议)其主要用作将IP地址转换为以太网的MAC地址,在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

2、源物理地址:00:25:11:4e:02:34,目标物理地址:ff:ff:ff:ff:ff:ff,源ip地址:0.0.0.0,目标ip地址:255.255.255.255 每层协议:Ethernet、ARP,传递的内容是将IP地址解析为物理地址。

HTTP协议

HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。

3、源物理地址:00:25:11:4e:02:34,目标物理地址:00:04:96:10:64:30,源ip地址:219.222.170.14,目标ip地址:172.30.0.19 每层协议:Ethernet、IP、TCP、HTTP,传递的内容是访问东莞理工网络中心window服务

4、以184分组、73分组为例,DNS、HTTP 的下层支撑协议分别是TCP、UDP。(DNS、HTTP为应用层协议,TCP、UDP为传输层协议)


数据链路层

p9CILX4.md.png

路由器只需要实现三层,即网络层、链路层、物理层。可以看作数据在同一层上面传输。

数据链路层的三个重要问题:

封装成帧、差错检测、可靠传输

封装成帧

给一段数据前后分别加上首部和尾部,便于接收端从比特流中辨认帧的开始和结束位置

差错检验

1、奇偶校验

漏检率高,计算机网络一般不采用

奇偶校验是一种简单的差错检验方法,它可以检测数据传输过程中的单比特差错。在奇偶校验中,发送方在每个数据块的末尾添加一个附加比特,使得整个数据块中1的个数为奇数或偶数。接收方在接收到数据块后,也会计算数据块中1的个数,如果计算结果与发送方添加的附加比特不一致,则说明数据传输过程中发生了差错。 例如,假设发送方要发送一个8位的数据块10110110,使用奇偶校验进行差错检验,可以在数据块末尾添加一个附加比特,使得整个数据块中1的个数为偶数,因此添加的附加比特为0,发送的数据块变为101101100。接收方接收到数据块后,计算数据块中1的个数为4,与发送方添加的附加比特0一致,说明数据传输过程中没有发生差错。 奇偶校验虽然简单,但只能检测单比特差错,对于多比特差错或数据重复等差错无法检测。

2、循环冗余校验

它通过对数据进行多项式运算来生成一个校验码,然后将该校验码附加到数据末尾进行传输。接收方在接收到数据后,也进行多项式运算,生成一个校验码,并将其与接收到的校验码进行比较。如果两个校验码不匹配,则说明数据传输中出现了错误。 CRC算法的基本思想是将数据看作一个二进制数,然后将该数与一个预设的生成多项式进行除法运算,得到余数作为校验码。在发送端,将数据和校验码一起传输;在接收端,接收到数据后,再进行一次除法运算,得到余数,并将其与接收到的校验码进行比较,以判断数据是否正确。 CRC算法的优点是能够检测多种类型的错误,包括单比特错误、双比特错误和突发错误。它也比其他校验算法更加高效,因为它可以使用硬件电路来实现,而不需要进行复杂的计算。

可靠传输

常见的实现可靠传输的方法包括:

  1. 停止-等待协议:发送方发送数据后等待接收方的确认,接收方收到数据后发送确认,发送方收到确认后再发送下一个数据。

  2. 滑动窗口协议:发送方和接收方都维护一个窗口,发送方只能发送窗口内的数据,接收方只能接收窗口内的数据,通过滑动窗口来实现流量控制和拥塞控制。

  3. ARQ协议:自动重传请求协议,当接收方发现数据出错时,会发送一个请求重传的消息给发送方,发送方会重新发送数据。

  4. FEC编码:前向纠错编码,通过在数据中添加冗余信息来检测和纠正错误,提高数据传输的可靠性。

  5. 数据校验:在数据传输过程中添加校验码,接收方通过校验码来检测数据是否出错,如果出错则要求发送方重新发送数据。

    这些方法可以单独使用,也可以组合使用,以提高数据传输的可靠性和效率。

PPP协议

点对点协议PPP(Point-Point Protocol)是目前使用最广泛的点对点数据链路层协议