最近在看《图解HTTP》,将TCP/UDP相关内容做一个总结,也算是系统的学习一下这个知识点。
1.TCP/IP协议族
- 什么是TCP/IP协议?
TCP/IP是互联网相关的各类协议族的总称
+TCP/IP的分层管理
TCP/IP协议族中分为四层:应用层,传输层,网络层,数据链路层
应用层:应用层决定了向用户提供应用服务时通信的活动。
包含FTP(File Transfer Protocol 文件传输协议),DNS(Domain Name System 域名系统),HTTP协议
传输层:对上层应用层提供处于网络连接中的两台计算机之间的数据传输。
包含TCP(Transmission Control Protocol 传输控制协议),UDP(User Data Protocol用户数据报协议)
网络层:用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位,该层规定了通过怎样的路径到达对方的计算机,并把数据包传送给对方。
包括 IP(Internet Protocol)
链路层:用来处理连接网络层的硬件部分
-
TCP/IP通信传输流
TCP/IP通信传输流
利用TCP/IP协议族进行通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息,反之,接收端在层与层传输数据时,每经过一层都会把对应的首部消去。所谓的这种包装数据就是封装。
2.IP协议
IP协议位于网络层
- IP协议作用
IP协议的作用是将各种数据包传送给对方,而确保数据是否成功传送给对方要满足两个条件:IP地址和MAC地址(Media Access Control Address)
IP地址:指明节点被分配到的地址
MAC地址:网卡所属的固定地址
IP地址和MAC地址进行配对,IP地址可变换,MAC地址基本不会变
3.TCP协议
TCP协议位于传输层
- TCP协议作用
提供可靠的字节流服务。在传输中,为了方便传输,将大数据分割成报文段为单位的数据包进行管理。
+TCP协议传输特点
确保数据准确到达目标
+TCP协议的三次握手操作
为了能准确无误的送达数据,TCP采取了三次握手,握手中使用TCP的标志SYN(synchronize)和ACK(acknowledgement)封装数据。传递过程:
a.发送端发送一个带有SYN标志的数据包给接收方
b.接收方接收到数据后,返回一个带有SYN/ACK标志的数据包给发送端
c.发送端在回传一个ACK标志的数据包
经过a-b-c后 三次握手结束,若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
TCP协议三次握手示意图
4.DNS协议
DNS协议位于应用层
- DNS协议作用
DNS协议提供域名到IP地址之间的解析服务,可以通过域名解析IP地址,也可以通过IP地址解析域名
DNS解析域名/IP地址示意图Snip20190419_10.png
通过以上分析,总结一下IP协议,TCP协议和DNS服务在使用HTTP协议之后在通信过程中各自发挥什么作用
Snip20190419_11.png
5.URI
- URI定义
URI 是Uniform Resource Identifier的缩写(统一资源标识符),用字符串标识某一互联网资源
a. Uniform
规定统一的格式可方便处理多种不同类型的资源,而不是根据上下文环环境来识别资源指定的访问方式。
b.Resource
资源的定义是“可标识的任意东西”,资源不仅可以是单一的,也可以是多数的集合体
c.Identifier
表示可标识的对象
- URI 格式
a.绝对URI 格式如下:绝对URI 格式.png
6.URL
- URL定义
URL 是Uniform Resource Locator的缩写(统一资源定位符),URL表示资源的地点(互联网上所处的位置),URL是URI的子集,URL正是使用Web浏览器访问Web页面时需要输入的网页地址,比如:http://hackr.jp/,就是URL
URL地址.png
- URL格式
相对URL,是指从浏览器中基本URI中指定的URL,形如/image/login.gif
7.HTTP协议
- HTTP协议定义
用于客户端和服务器之间的通信,请求必定由客户端发出,而服务端回复响应,用于HTTP协议交互的信息被称为HTTP报文
请求端的HTTP报文叫做请求报文
请求报文:请求方法+请求URI+协议版本+可选的请求首部字段和内容实体构成的
请求报文的构成
响应端的HTTP报文叫做响应报文
响应报文:协议版本+状态码+解释状态码的原因短语+可选响应首部字段+实体构成
响应报文的构成
报文结构如下:
请求报文结构和响应报文结构
- HTTP协议特点
HTTP协议是一种不保存状态,即无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对与发送过的请求或者响应都不做持久化处理
- HTTP协议请求发方法
GET:获取资源
GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。
POST:传输实体主体
POST的主要目的并不是获取响应的主体内容
PUST:传输文件
PUST方法用来传输文件,类似FTP协议的文件上传一样,要求在请求报文的主体汇总包含文件内容,然后保存到请求URI指定的位置
HEAD:获取报文首部
HEAD方法和GET,只是不返回报文主体部分,主要确认URI的有效性及资源更新的日期时间等
DELETE: 删除文件
DELETE方法用来删除文件,与PUT方法(上传文件)相反,按照方法请求URI删除指定的资源
OPTIONS:询问支持的方法
OPTIONS方法用来查询针对请求URI指定的资源支持的方法
TRACE:追踪方法
TRACE方法是让Web服务器端将之前的请求通信还给客服端的方法
CONNECT:要求用隧道协议连接代理
CONNET 方法要求在与代理服务器通信时建立隧道,实现隧道协议进行TCP通信,主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输
HTTP1.0/HTTP1.1 支持的方法
支持版本
- TCP持久连接概念
持久连接旨在建立1次TCP连接(完成TCP三次握手就是完成一次TCP连接)后进行多次请求和响应的交互,只要任意一端没有明确提出断开连接,则保持TCP连接状态。好处是减少TCP连接的重复建立和断开所造成的额外开销,减轻了服务端的负载,同时缩短请求时间。
8.TCP管线化
持久化连接使得多数请求以管线化方式发送成为可能。前面说了持久连接是前一个发送请求后等待并收到响应之后才能发送下一个请求,管线出现之后,不用等待响应即可直接发送下一个请求,这样就能够同时并发发送多个请求,而不需要一个接一个的等待响应了。
9.Cookie
- Cookie理解
为了解决HTTP协议无状态特征的需求,引入Cookie技术,Cookie技术就是通过在请求和响应报文中写入Cookie信息来控制客户端
- Cookie 工作原理
Cookie 会根据从服务器响应报文中获取一个叫做Set-Cookie的首部请求字段信息,通知客户端保存Cookie。当下次客户端再往服务器中发送请求时,客户端自动在请求报文中加入Cookie值后发送出去,服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
以上就是HTTP协议中涉及到的知识点,本篇先总结到此
网友评论