本文是在本身有必定的HTTP知识的基础上写的,因此不是零基础写起哦
HTTP
超文本传输协议。html
WEB
就是是同http
协议做为一种规范来,完成从客户端到服务器的一系列运做的。而协议是指规则的约定。web
WWW
的三个构建技术为: 1. HTML
超文本标记语言做为页面 2. HTTP
超文本传输协议做为文档传递的规范 3. 指定文档所在地的URL
服务器
了解HTTP以前,咱们务必须要先了解一下TCP/IP
协议族.网络
咱们一般所说的网络就是再TCP/IP
的基础上运做的。而HTTP
仅是做为TCP/IP
的一个分支出现。xss
那么TCP/IP是什么东东呢?学习
TCP/IP
是互联网相关的各种协议的总称。ui
TCP/IP
最主要的一点就是分层管理,分为四层: 传输层
、网络层
、数据链路层
、应用层
。这样分层的好处是很是显著的,各自互补影响,他们只须要完成本身分工的那一部分任务就能够了,并不须要去管别的层所处理的任务。spa
TCP/IP协议族各层的做用:操作系统
应用层
应用层决定的是向用户提供应用服务时的活动。.net
在TCP/IP中预存了一些固定的应用服务。包括FPT (文件传输协议)、 DNS(域名系统)。http也是在应用层。
传输层
它提供处于网络连接中的两个计算机之间的数据传输。
存在有两个性质彻底不一样的协议: TCP(传输控制协议) 、 UDP(用户数据报协议)。
网络层
它处理的时网络上流通的数据包,数据包时网络传输的最小的单位,该层规定了应该经过怎样的一个 途径将数据包从一个计算机传到另外一个计算机。 若是说在与对方的计算机之间存在有诸多的计算机或者是网络,那么该层将会选择一条传输路径。
链路层
主要解决的是连接网络的硬件部分,包括操做系统,硬件设备,NIC、以及光纤等物理可见的部分。
TCP/IP通讯传输流
利用TCP/IP来进行网络通讯时,会经过分层处理来与对方进行通讯。
咱们拿HTTP来分析讨论一下。
[ x ] 咱们在应用层
客户端发送一个要查看Web页面的一个HTTP请求
。
[ x ] 经过传输层
,将接受到的HTTP请求报文进行拆分,并在各个报文上打上标记序号以及端口号,将其发送给网络层。
[ x ] 在网络层
,经过IP协议增长请求目的地的MAC
地址给链路层。
[ x ] 到此,发往服务器的请求就准备完毕了。
[ x ] 服务端的接受时按照相反的顺序进行的,首先是服务器的链路层接收,接着逐层往上传,一直到达应用层,这样就获得了发送来的HTTP请求。
封装
。负责传输的IP协议
IP协议属于网络层,这里所说的IP协议可能会让一些人将IP
与IP地址
混淆。IP
实际上是一种协议的名称。
IP协议的做用主要是把各类数据包传给对方,而要保证确实的传给对方,那么就须要知足各种条件,其中最重要的是IP地址
和MAC地址
。
标识网络中的一台计算机,通常至少有三种方法,最经常使用的是域名地址、IP地址和MAC地址,分别对应应用层、网络层、物理层。网络管理通常就是在网络层针对IP地址进行管理,但因为一台计算机的IP地址能够由用户自行设定,管理起来相对困难,MAC地址通常不可更改,因此把IP地址同MAC地址组合到一块儿管理就成为常见的管理方式。
通讯双方通常不在同一个局域网以内,一般是要通过多台计算机以及互联网中的中转设备来通讯的。在通讯中主要是经过MAC地址来实现中转。而ARP协议是一种用于解析IP反查MAC的协议。
咱们最终因该了解的是不管互联网中的哪台计算机、哪一个网络设备都没法了解互联网中的细节,所以在通讯过程当中是经过不断的中转,来到达目的地的,中转的方向经过IP
地址MAC
地址的网段来寻找。
确保可靠性的TCP协议
TCP
属于传输层
。提供的是可靠的字节流服务
。
在传输打断的请求数据的时候,TCP会将其拆分红报文段为单位的数据包,而可靠的数据传输服务是指,TCP可以保证将完整的数据传送给对方哦。
为了准确无误的传送过去,TCP连接采用了三次握手
的策略。
所谓三次握手
(Three-way Handshake),是指创建一个 TCP 链接时,须要客户端和服务器总共发送3个包。
第一次握手:(SYN=1,seq = x)
客户端发送一个标志即SYN=1
的包,告诉客户端要链接了,同时把打算链接的端口
以及初始化序列x
保存在包头的seq
(Sequence Number)发送给服务器。客户端进入了 SYN_SEND
状态.
第二次握手: (SYN = 1; ACK = 1; seq = y; ACKNUM = x+1;)
服务端返回承认包ACK
,即ACK = 1; SYN = 1;
返回服务器本身的序列号 seq = y
; 以及确认序列号为 ACKnum = x+1
;服务端进入SYN_RCVD
状态。
第三次握手:(ACK = 1; ACKnum = y + 1);
客户端再次发送确认包ACK = 1; SYN = 0;
确认序列号为 y + 1;
。以后客户端服务端都进入了ESTABLISHED
状态。 至此TCP握手
结束。
负责域名解析的DNS服务
DNS协议一样属于应用层。它提供的是域名到IP地址之间的解析服务。
计算机能够被赋予IP地址,也能够被赋予主机名和域名。好比: www.gcsn.site
用户一般使用的是主机名和域名来直接访问计算机,不多会直接用IP地址来访问,一是由于很难记忆,还不符合人们的习惯。
DNS协议提供的是经过域名查找IP地址,或者逆向从IP地址反查域名的服务。
各类协议与HTTP的关系
咱们以一个web页面的请求为例子来贯穿一下整个流程吧。
URL是统一资源定位符,URI是统一资源标识符。
u —— uniform 统一的格式
r —— Resource 资源,任何东西可为资源
I —— Identifier 可标识的
URI是用一串字符串表示互联网的资源,URL是表示资源的位置。因此URL是URI的子集。
绝对URI的格式:
http://user:pass@www.example.com:80/dir/index.html?uid=1#ch2
从左往右依次是: 协议名、用户名、密码、服务器地址、端口、带层次的文件路径、查询字符串、片断标识符
RFC
:HTTP协议
的技术标准。
未完待续,第一篇告一段落了,以后会有更多篇