网络世界中两大协议,即TPC/IP和OSI协议,经历的长时间的竞争后最终TCP/IP协议脱颖而出,才有了现在大一统的因特网基础设施,而OSI也成为了网络协议的活化石,现在已经沦落到仅供参考的地位了,但对于我们学习而言还是很有参考意义的。
- 应用层
对应协议 HTTP POP3 TELNET FTP SSH - 传输层
对应协议 TCP UDP - 因特网层
对应协议 IPV4 IPV6 ARP - 网络接口层
对应协议 IPV4 IPV6 ARP
接下来聊聊网络世界中著名的HTTP协议,英文名Hyper Text Transfer Protocol 中文名称超文本传输协议 主要用途是完成客户端浏览器与服务器之间的通讯过程
主要方法 PUT DETELE POST GET,对应的是增删改查:
GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行修改。
POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数据。
PUT:英文含义是放置,也就是向服务器新添加数据,就是所谓的增。
DELETE:从字面意思也能看出,这种方式就是删除服务器数据的过程。
POST和GET作为主流方法有以下区别:
Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。 但是这种做法也不时绝对的,大部分人的做法也是按照上面的说法来的,但是也可以在get请求加上 request body,给 post请求带上 URL 参数
Get请求提交的url中的数据最多只能是2048字节,这个限制是浏览器或者服务器给添加的,http协议并没有对url长度进行限制,目的是为了保证服务器和浏览器能够正常运行,防止有人恶意发送请求。Post请求则没有大小限制
Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集
Get执行效率却比Post方法好。Get是form提交的默认方法
GET产生一个TCP数据包;POST产生两个TCP数据包
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
浏览器输入网址后浏览器和服务器到底做了什么工作:
- DNS服务器解析:用来将网址转化为ip地址,一般域名服务提供商会帮你做好这件事
- 客户端与服务器建立TCP连接
TCP三次握手原理
- 确认主机发信能力与服务收信能力OK (服务器视角)
- 确认服务发信能力与主机收信能力OK (主机视角)
- 确认服务发信能力与主机收信能力OK (服务器视角)
TCP四次挥手原理
- 客户端数据传输完毕后,向服务端发送一个释放连接报文,这个报文发出后是不能继续发送报文了,但是可以继续接收报文
- 服务端接收到释放连接报文后会给客户端回复确认报文,但是这时候服务端是处于关闭等待状态,服务端还可以发送数据
- 服务端发送完毕数据后,向客户端发送一个释放连接报文,这时候服务端终止连接
- 客户端收到服务端发的释放连接报文后,向服务端发出确认报文。客户端接收到释放连接确认报文后不是立马释放TCP连接,而是要经过2MSL(最长报文段寿命的2倍时长)后才释放TCP连接。而服务端一旦收到客户端发出的确认报文就会立马释放TCP连接,所以服务端结束TCP连接的时间要比客户端要早。
- 发送HTTP请求
- 服务器处理请求并且返回HTTP报文
- 浏览器解析渲染页面
- TCP连接关闭
TCP与UDP的区别