Tcp/Udp 三次握手四次挥手

Posted 一起学习啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tcp/Udp 三次握手四次挥手相关的知识,希望对你有一定的参考价值。

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协议版本。

以上是关于Tcp/Udp 三次握手四次挥手的主要内容,如果未能解决你的问题,请参考以下文章

TCP三次握手,四次挥手

网络基础之重TCP/UDP三次握手和四次挥手

TCP/IP三次握手四次挥手

TCP/UDP协议理解三次握手四次挥手Socket

TCP三次握手与四次挥手

深入浅出之 TCP协议(三次握手与四次挥手超时重发流量控制拥塞控制与UDP区别)