ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Tcp/Udp 三次握手四次挥手

2021-06-16 20:01:26  阅读:129  来源: 互联网

标签:Udp 请求 报文 Tcp 四次 请求者 服务器 连接 客户端


TCP/IP:文件传输(sftp)

  1. TCP面向连接,
  2. TCP提供的服务更安全可靠,
  3. TCP连接只能是一对一通信的,
  4. Tcp耗费系统资源较多,
  5. Tcp传输速度较慢

建立连接,安全的请求方式

优点:安全,保证数据传输的时候不会丢失,而且还知道把数据传给谁

UDP:微信视频通话

  1. UDP是无连接的
  2. UDP不保证可靠交付
  3. 但UDP不但支持一对一,还可以一对多、多对一和多对多的交互通信
  4. udp耗费资源较少
  5.  udp传输速度较快

 不建立连接的,不安全的广播方式

优点:报文简单,传输速度快,效率高

 

HTTP是封装了TCP/IP协议,让其能更适合互联网中的数据传输。(超文本传输协议)

http和https区别

     1、https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。

 

    2、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。

 

    3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

 

    4、http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。

 

组成三部分请求行,请求头,请求体

请求行:请求方式,请求的URL,请求的协议版本(第一行)

请求头:以k:v来记录请求的属性(第一行到空行之间)

请求体:携带请求的参数(空行以下)

 

 

 

三次握手,四次挥手

 

 

 

 

  连接建立阶段:

                        第一次握手:客户端的应用进程主动打开,并向客户端发出请求报文段。其首部中:SYN=1,seq=x。

                        第二次握手:服务器应用进程被动打开。若同意客户端的请求,则发回确认报文,其首部中:SYN=1,ACK=1,ack=x+1,seq=y。
                        第三次握手:客户端收到确认报文之后,通知上层应用进程连接已建立,并向服务器发出确认报文,其首部:ACK=1,ack=y+1。当服务器收到客户端的确认报文之后,也通知其上层应用进程连接已建立。

                        在这个过程中,通信双方的状态如下图,其中CLOSED:关闭状态、LISTEN:收听状态、SYN-SENT:同步已发送、SYN-RCVD:同步收到、ESTAB-LISHED:连接已建立

 

 

  连接释放阶段:

                        第一次挥手:数据传输结束以后,客户端的应用进程发出连接释放报文段,并停止发送数据,其首部:FIN=1,seq=u。

                        第二次挥手:服务器端收到连接释放报文段之后,发出确认报文,其首部:ack=u+1,seq=v。此时本次连接就进入了半关闭状态,客户端不再向服务器发送数据。而服务器端仍会继续发送。

                        第三次挥手:若服务器已经没有要向客户端发送的数据,其应用进程就通知服务器释放TCP连接。这个阶段服务器所发出的最后一个报文的首部应为:FIN=1,ACK=1,seq=w,ack=u+1。

                        第四次挥手:客户端收到连接释放报文段之后,必须发出确认:ACK=1,seq=u+1,ack=w+1。 再经过2MSL(最长报文端寿命)后,本次TCP连接真正结束,通信双方完成了他们的告别。

                        在这个过程中,通信双方的状态如下图,其中:ESTAB-LISHED:连接建立状态、FIN-WAIT-1:终止等待1状态、FIN-WAIT-2:终止等待2状态、CLOSE-WAIT:关闭等待状态、LAST-ACK:最后确认状态、TIME-WAIT:时间等待状态、CLOSED:关闭状态

 

restful风格

 一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

 RESTful 架构可以充分的利用 HTTP 协议的各种功能,是 HTTP 协议的最佳实践

(百度搜索restful)

状态码

 

2xx:成功处理了请求的状态代码

200  (成功)  服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。

201  (已创建)  请求成功并且服务器创建了新的资源。

202  (已接受)  服务器已接受请求,但尚未处理。

203  (非授权信息)  服务器已成功处理了请求,但返回的信息可能来自另一来源。

204  (无内容)  服务器成功处理了请求,但没有返回任何内容。

205  (重置内容)服务器成功处理了请求,但没有返回任何内容。

206  (部分内容) 服务器成功处理了部分GET请求。

3xx:通常,这些状态代码用来重定向

300  (多种选择)  针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择-项操作, 或提供操作列表供请求者选择。

301  (永久移动)  请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。

302  (临时移动)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

303  (查看其他位置)请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。

304  (未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

305  (使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。

307  (临时重定向)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

4xx:客户端的错误

400  (错误请求)服务器不理解请求的语法。

401  (未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。

403  (禁止)服务器拒绝请求。

404  (未找到)服务器找不到请求的网页。

405  (方法禁用)禁用请求中指定的方法。

5xx:服务器在尝试处理请求时发生内部错误,这些错误可能是 服务器本身的错误

500  (服务器内部错误)  服务器遇到错误,无法完成请求。

501  (尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。

502  (错误网关)服务器作为网关或代理,从上游服务器收到无效响应。

503  (服务不可用)服务器目前无法使用( 由于超载或停机维护)。通常,这只是暂时状态。

504  (网关超时)  服务器作为网关或代理,但是没有及时从上游服务器收到请求。

505  (HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本。

标签:Udp,请求,报文,Tcp,四次,请求者,服务器,连接,客户端
来源: https://www.cnblogs.com/yuanjunyan/p/14890830.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有