网络协议相关

本文详细解释了网络分层概念,包括TCP/UDP端口号、IP协议、数据链路层和物理层,以及HTTP协议的工作原理、GET和POST请求的区别,HTTP缓存技术,TCP协议的三次握手和四次挥手,以及无连接协议UDP的应用。
摘要由CSDN通过智能技术生成

网络分层的概念

在这里插入图片描述
网络传输协议:网络数据在互联网进行传输,遵从的传输规则
传输层:TCP/UDP port端口号(确定来自哪个软件)
网络层:IP协议 确定传输给哪台电脑(IP)
数据链路层:数据信号(1.0)
物理层:数据信号->光信号

HTTP协议-超文本传输协议

HTTP是一种无状态的应用层协议,基于TCP/IP通信协议来传输数据。

http请求的步骤

  1. 建立TCP连接
  2. 客户端向服务器请求,请求体
  3. 服务器应答,返回响应头,响应内容
  4. 释放(关闭)TCP连接
  5. 客户端解析响应内容

http中常见的状态码
1xx:响应
2xx:成功 200(GET请求成功) | 201(修改成功)
3xx:重定向 302(临时重定向www.mi.com=>m.mi.com) | 304(未修改) | 307(临时重定向)
4xx:客户端有问题 400(客户端请求的语法错误,服务器无法理解)| 401(请求要求用户的身份认证) | 403(拒绝执行此请求) | 404(网页找不到)
5xx:服务器有问题 500(服务器内部错误) | 502(网关错误) | 503(服务器不可用) | 504(超时)

HTTP和HTTPS的区别

GET与POST对比

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
1、url可见性:
get,参数url可见;
post,url参数不可见

2、数据传输上:
get,通过拼接url进行传递参数;
post,通过body体传输参数

3、缓存性:
get请求是可以缓存的
post请求不可以缓存

4、后退页面的反应
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求

5、传输数据的大小
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)
post请求传输数据的大小可以无限大

6、安全性
这个也是最不好分析的,原则上post肯定要比get安全,毕竟传输参数时url不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,防君子不防小人就是这个道理。对传递的参数进行加密,其实都一样。

7、数据包
GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

WebSocket

为了解决HTTP无法做到消息的「实时性」,服务端无法主动推送信息。
应用场景:聊天室,弹幕,实时更新的股票或者其他信息

WebSocket是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。

  1. 建立于 TCP 协议之上的应用层;
  2. 一旦建立连接(直到断开或者出错),服务端与客户端握手后则一直保持连接状态,是持久化连接;
  3. 服务端可通过实时通道主动下发消息;
  4. 数据接收的「实时性(相对)」与「时序性」;
  5. 较少的控制开销。连接创建后,ws客户端、服务端进行数据交换时,协议控制的数据包头部较小。在不包含头部的情况下,服务端到客户端的包头只有2~10字节(取决于数据包长度),客户端到服务端的的话,需要加上额外的4字节的掩码。而HTTP协议每次通信都需要携带完整的头部。
  6. 支持扩展。ws协议定义了扩展,用户可以扩展协议,或者实现自定义的子协议。(比如支持自定义压缩算法等)

HTTP的缓存技术

多次重复发送同个HTTP请求,每次请求的数据都一样,我们可以将数据缓存在本地,下次直接读取本地的数据,避免多次发送重复HTTP请求的方法就是HTTP的缓存技术。

两种实现方式分别是强制缓存和协商缓存

强制缓存:只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。
发送请求之后,Server返回的响应头中会添加Cache-Control 设置过期时间。当浏览器再次发送请求之前会通过请求资源的时间与Cache-Control比较,计算出该资源是否过期,没有过期的话直接使用该缓存。当服务器再次收到该请求的时候,重新设置Cache-Control。

协商缓存
协商缓存就是与服务端协商之后,通过协商结果来判断是否使用本地缓存。??待补充

TCP协议-Transmission Control Protocol传输控制协议

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。
在这里插入图片描述

三次握手与四次挥手

三次握手用来建立TCP协议的过程,关键是要确认对方收到了自己的数据包。
需要三个步骤:客户端发送连接请求报文段,服务器收到请求并发送确认报文段,客户端收到确认并发送确认报文段

四次挥手是终止一个TCP连接的过程,需要四个步骤:①Server发送FIN申请断开连接
②Server接收信息后发送一个ACK给Client,表示我已经接收到
③Server发送FIN,用来关闭Server到Client的数据传送
④Client收到FIN后,同时返回ACK信息通知Server自己收到信息,开始断开连接,完成四次握手

为什么建立是三次,终止是四次??
①因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。

②但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。

③只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

UDP:无连接协议

特点:1.无连接 2.尽最大努力交付 3.面向报文 4.无拥塞控制 5.支持一对一,一对多,多对一的交互通信

缺点:1.不安全 2.准确度非常低 3.经常丢包

优点:1.及时性非常高 2.消耗流量少

应用:视屏聊天

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值