HTTP协议基础

互联网协议

互联网的实现,分为好几层,主要为实体层,链接层,网络层,传输层,应用层。

实体层

连接电脑的物理手段,它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

链接层

确定实体层0,1的分组方式
以太网协议:一组电信号构成一个数据包,叫“帧”,分为:标头和数据
发送数据:MAC地址通过“广播”发送给另一个MAC地址(ARP协议)

网络层

因为靠MAC地址,广播形式发送连接整个互联网是不现实的,互联网是无数个子网络组成的巨型网络。
网络层引进“网址”,区分不同的计算机是否属于同一个子网络
IP协议:规定网络地址的协议,IPv4,IPv6,一是为计算机分配IP地址,二确定地址是否在同一个网络
每台计算机会分配一个IP地址,分为网络,主机
子网掩码:判断两台计算机是否在同一个子网络,将两个IP地址与子网掩码分别进行AND运算

ARP协议:从IP地址得到MAC地址

  1. 两台主机不在同一个子网络,只能把数据包传送到两个子网络连接处的网关,让网关(路由协议)去处理。
  2. 如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个”广播”地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。
传输层

建立“端口到端口”的通信
只要确立主机和端口,就能实现程序之间的交流。Unix下主机+端口,叫”套接字“(socket)
UDP协议:在数据前面加上端口号,但可靠性差,无法知道对方是否收到
TCP协议:加入确认机制,重发

应用层

规定应用程序的数据格式  

DHCP协议:动态分配IP地址
DNS协议:将网址转换成IP地址

HTTP协议

超文本传输协议,是基于TCP/IP的关于数据如何在万维网中如何通信的协议,它允许将超文本标记语言从Web服务器传到客户端的浏览器

URL

Uniform Resource Locator:用于描述一个网络上的资源,基本格式如下
schema://host[:port#]/path/.../[?query-string][#anchor]

scheme 指定低层使用的协议(例如:http, https, ftp)
host HTTP服务器的IP地址或者域名
port HTTP服务器的默认端口是80,这种情况下端口号可以省略
path 访问资源的路径
query-string 发送给http服务器的数据
anchor 锚

HTTP协议是无状态的,引入Cookie机制来维护状态
响应码  

200表示成功
3xx表示重定向
4xx表示客户端发送的请求有错误
5xx表示服务器端处理时发生了错误  

响应类型:由Content-Type指定

GET与POST区别
  1. GET幂等性,POST非幂等
  2. GET把参数包含在URL中,POST通过request body传递参数
  3. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制
  4. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值
  5. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息  

在传输层,本质都是TCP链接,无差别,但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

  • GET产生一个TCP数据包;POST产生两个TCP数据包(不是所有浏览器)
----------本文完,感谢您的阅读----------