基于TCP发送http请求建立连接与断开连接的过程
来源:互联网 发布:英智brecruit知乎 编辑:程序博客网 时间:2024/06/15 17:58
首先说说TCP是什么,HTTP又是什么?
TCP:传输控制协议,面向连接的,可靠地,安全的,基于字节流的传输层协议
HTTP:超文本传输协议,但是这个协议是应用层传输协议,它是建立在TCP之上的协议
建立连接(三次握手):
第一次:Client----------SYN------------->Server
第二次:Server---------(ACK+SYN)------------------>Client
第三次:Client-----------ACK------------------------>Server
断开连接(四次挥手)
第一次:Client--------------FIN--------------------->Server 服务器读通道关闭
第二次:Server-------------ACK--------------------->Client 客户机写通道关闭
第三次:Server-------------FIN---------------------->Client 客户机读通道关闭
第四次:Client--------------ACK--------------------->Server服务器写通道关闭
备注:
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
FIN(finish结束)
为什么需要三次握手呢?
client发出的第一个连接请求报文段并没有丢失,而是在某个网络某个结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”。主要目的防止server端一直等待,浪费资源。
为什么需要四次挥手才能断开连接
可能会有疑问,在tcp连接握手时为何ACK是和SYN一起发送,但是在这里ACK却没有和FIN一起发送呢。原因是因为tcp是全双工模式,接收到FIN时意味将没有数据再发来,但是还是可以继续发送数据。
- 基于TCP发送http请求建立连接与断开连接的过程
- TCP协议连接建立与连接断开过程(含断开时的TCP状态图)
- TCP协议连接建立与连接断开过程(含断开时的TCP状态图)
- TCP协议连接建立与连接断开过程(含断开时的TCP状态图)
- TCP协议连接建立与连接断开过程(含断开时的TCP状态图)
- TCP建立断开连接过程
- TCP连接建立断开过程
- TCP协议连接建立与连接断开过程
- TCP协议连接建立与连接断开过程
- TCP连接的建立与断开
- TCP连接建立与断开
- TCP建立连接和断开连接过程
- TCP建立连接和断开连接过程
- TCP建立连接和断开连接过程
- TCP/IP 建立连接、断开连接的过程
- TCP/IP 建立连接、断开连接的过程
- TCP/IP 建立连接、断开连接的过程
- TCP建立连接和断开连接过程的理解
- python实现的四种抽样方法
- 安卓基础<第三章>
- 使用IDEA和Mybatis实现CRUD(二)使用了NameSpace特性
- 设计模式—六大原则
- 自定义控件-精美的心电图
- 基于TCP发送http请求建立连接与断开连接的过程
- 数据结构实验之排序七:选课名单
- selenium使用更快的Driver--HtmlUnit Driver
- 144. Binary Tree Preorder Traversal 二叉树的前序遍历
- 运行官方bugly的热修复demo流程
- UML java 图示6种类关系
- c语言==测量各种数据类型的长度以及typedf关键字对数据类型的作用
- C程序设计第二章
- 关于Java中枚举Enum的深入剖析