一.TCP/IP协议-HTTP
TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;而网络访问层,也叫网路接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。
HTTP协议
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)。
概述
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤:
\1. 客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com。
\2. 发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
\3. 服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
\4. 释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
\5. 客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
二.抓包验证
实验工具:Wireshark
打开该工具:
找到菜单栏的捕获–>选项,弹出以下界面
查看连接相应网络
勾选后点击开始,开始捕获
进入以下界面
过滤
我们使用Wireshark时,毫无意外会得到大量的冗余信息,为了找到我们需要的部分,信息过滤是十分有必要的。该工具提供了两种过滤器,一种是显示过滤器,在该页面菜单栏下方有一个显示过滤器,当我们设置条件时,封包列表中就会选中符合条件的封包并显示出来。一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。在捕获–>捕获过滤器中设置
点击“+”号新建,设置Filter Name和Filter Expression。
过滤表达式规则
(1) 协议过滤 比如 TCP,只显示 TCP 协议。
(2) IP 过滤 比如 ip.src 192.168.1.102 显示源地址为 192.168.1.102, ip.dst192.168.1.102, 目标地址为 192.168.1.102
(3) 端口过滤 tcp.port 80, 端口为 80 的 tcp.srcport == 80, 只显示 TCP 协议的愿端口为 80 的。
(4) Http 模式过滤 http.request.method“GET”, 只显示 HTTP GET 方法的。
(5) 逻辑运算符为 AND/ O
封包列表
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及 封包信息。
封包信息详情
(1) Frame: 物理层的数据帧概况
(2) Ethernet II: 数据链路层以太网帧头部信息
(3) Internet Protocol Version 4: 互联网层 IP 包头部信息
(4) Transmission Control Protocol: 传输层 T 的数据段头部信息,此处是 TCP
(5) Hypertext Transfer Protocol: 应用层的信息,此处是 HTTP 协议
TCP报文段结构:
TCP三次握手
客户端发送syn报文,并置发送序号为X,服务端发送syn+ack报文,并置发送序号为Y,再确认序号为X+1,客户端发送ack报文,并置发送序号为Z,再确认序号为Y+1。
在图中可以看到Wireshark截获到了三次握手的三个数据包,然后才是HTTP。这说明HTTP使用TCP建立连接。
在本例中,查看第一个TCP封包的详细信息:
客户端发送了一个TCP,标志位为SYN,序列号为0,代表客户端请求建立连接。
第二个TCP封包的详细信息:
服务器发回确认包,标志位为SYN,ACK。将确认序号设置为酷虎的ISN+1,即0+1=1。
第三个TCP封包的详细信息:
客户端再次发送确认包,SYN标志位为0,ACK标志位为1,并且把服务器发来的ACK的序号字段+1,放在确认字段中发送给对方,并且在数据段写ISN+1。
三.总结
TCP通过三次握手建立连接,四次挥手断开连接,实现连接的可靠性。
四.参考链接
https://www.cnblogs.com/an-wen/p/11180076.html