网络协议

网络协议

协议是进程通信的一种规范。
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
网络协议的目的,是为了统一不同设备的通信接口。

网络协议是由三个要素组成:

  1. 语义 语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
  2. 语法 语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。
  3. 时序 时序是对事件发生顺序的详细说明。(也可称为“同步”)。

人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。

一、TCP/IP协议

TCP/IP不是一种协议,是一个协议族,有很多协议。
TCP/IP协议族常用的协议有:TCP , UDP , IP , ARP , ICMP , IGMP , RARP

TCP/IP 协议层次有:应用层,传输层,网络层,链路层。如果按照7层的标准,应用层可分为应用层、表示层、会话层,链路层可分为链路层、物理层。

1、TCP协议

TCP是面向连接的,可靠的通信协议。

服务端需要有一个socket来监听端口,用于接受新的连接,有新连接就创建一个socket对象。网络框架中为了优化大量的socket连接,一般采用连接池技术。每个TCP包发送成功之后,收到消息的一段会返回一个ack包告诉发送方,接收消息成功。

1.1 TCP的三次握手
  • 客户端发送syn包给服务端(第一次握手);
  • 服务端返回syn+1包和ack码(第二次握手);
  • 如果客户端计算和syn+1与服务端返回的syn+1相等,那么说明服务端准备好了。客户端将收到的ack码+1并返回给服务端(第三次握手);
    服务端判断自己计算的ack+1是否与接受的ack+1相等。如果相等,客户端和服务端连接成功。
    如果tcp客户端掉线,那么服务端就会收到一个长度为0的数据包。

(syn:同步序列编号,同步作用;ack:确认字符,应答作用)

1.2 为什么需要三次握手

TCP握手的过程是它建立连接的过程,建立连接,需要确认客户端和服务端双方都能进行通信,所以需要三次

1.3 TCP的四次挥手
  • 主动方发送一个FIN,关闭主动方到被动方的数据传输(第一次挥手);
  • 被动方收到这个FIN,返回一个ACK给主动方(第二次挥手);
  • 被动方关闭连接,发送一个FIN给主动方(第三次挥手);
  • 主动方发回一个ACK给被动方确认。(第四次挥手)
1.4 为什么TCP挥手会比握手多一次

因为被动方发送ACK和FIN多数情况是分开发送的。被动方接受一个FIN仅仅只代表主动方没有任何数据发给你了,但不代表被动方没有数据要发过去,所以有可能被动方还有数据数据要发送,等被动方要发送的数据要发送完了再发送FIN包。

2、UDP协议

UDP 是面向无连接的,UDP只要知道ip和端口号就能发送,不需要建立连接,UDP是一个不可靠的协议。

优势:资源消耗小,处理速度快
缺点:网络不好的话,容易丢包,不提供数据包分组、组装、排序。

二 、HTTP协议和HTTPS协议

HTTP是一个基于请求和响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。

1、常见的HTTP方法

  • GET:请求访问被URI识别的资源
  • POST:传输信息给数据库
  • PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置
  • HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
  • DELELTE:删除文件,与PUT方法相反,删除对应URI位置的文件。

2、get和post方法的区别

  • get请求的数据一般都拼接在URL的地址后面,是明文显示的,而且长度存在限制,其安全性步入post请求高,但执行速度会比post请求高,get请求一般用于查询的请求的方式中
  • post请求的方式,它的请求数据一般是放在http的请求体中,也就是我们所说的body体中,它的数据长度是不受限制的,它可以明文显示,也可以是密文显示,所以post请求的数据安全性比较高,所以这种方式一般是用于提交数据或者是修改数据的场景中。

3、常见HTTP状态码

  • 1xx:指示消息,请求已接受,继续处理;

  • 2xx:成功,表示请求已被成功接收;

  • 3xx:重定向,要完成请求必须进行进一步操作;

  • 4xx:客户端错误,请求无法实现;

  • 5xx:服务器端错误,服务器未能实现合法请求。

  • 200:请求被正常处理

  • 204:请求被受理,但无资源返回

  • 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。

  • 301:永久性重定向

  • 302:临时重定向

  • 303:与302功能相似,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上。

  • 304:发送附带条件的请求时,条件不满足时返回,与重定向无关。

  • 307:临时重定向,与302类似,只是强制要求用POST方法。

  • 400:请求报文语法有误,服务器无法识别。

  • 401:请求需要认证。

  • 403:请求的对应资源禁止被访问

  • 404:服务器无法找到对应资源。

  • 500:服务器内部错误。

  • 503:服务器正忙。

4、HTTP协议和HTTPS协议的区别

HTTPS协议是通过SSL协议外壳来确保其安全性,主要表现在三个方面:

  • 1、数据是加密的,SSL是通过非对称密钥分发的形式来完成必要的协商,然后通过对称密钥的加密方式对数据完成加密
  • 2、HTTPS协议会验证双方的身份信息,客户端和服务端双方都需要向CA机构去申请证书的,在SSL握手阶段的时候,就会去验证双方证书的是否可信,从而去验证双方的身份,这样的话就可以防止第三方的冒充
  • 3、保证数据的完整性:
    每次数据都需要加上MAC的摘要并签名,接受的数据和发送的数据,这个摘要是要相同的,这样就表示数据没有被篡改过。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值