📢📢📢 阿里云双十一,赠送您一张全场8折折扣优惠券

📢📢📢 2核2G3M的服务器,99元一年,新老用户续费同享!!

TCP协议及其持久连接与非持久连接

之前讲了长轮询什么的  提到了运输层的持久连接(persistent connection) 今天就来实现一下吧    总之经过多方的对比  持久连接就是长连接  与之对应的为非持久连接(non-persistent connection)    虽然运输层有TCP和UDP协议  但是不知道为什么却叫做TCP/IP忽略了UDP   反正 随便啦

首先讲一下 tcp协议  这个协议的结构是这样的

宽度为32位  32位和16位 其中首部长度4位,URG、ACK到FIN那一串为标志字段各1位,所以保留未用的有10位   其实URG PSH 和紧急指针也没有用到    然后这里涉及到的字段有:序号、确认号、ACK、SYN、FIN、数据。然后下面这个图又是关于一个完整的tcp请求的详细的过程的说明

  • 序号:每次请求的包的序号
  • 确认号:无论哪方,每次对方发送来数据,都必须要回复一个确认的请求,表明上一个请求收到了,确认号为预期下次发来的数据的序号。这个是保证tcp请求是可靠请求的关键,一旦发送方经过一段时间未收到上一个请求的确认 需要重新发送数据
  • ACK:这个请求是否为一个确认的请求,即确认号字段是否有效
  • SYN:这个请求是否为发起连接的请求
  • FIN:这个请求是否为关闭连接的请求
  • 数据:应用层协议封装的数据
    TCP-Connection

这个图有点长啊   说明一下   这个有四个部分   第一部分:众所周知的三次握手 第二部分:客户端发送数据 第三部分:服务器返回数据 第四部分:客户端断开连接

咱来看一下持久连接和非持久连接的区别

假设客户端请求三个数据
持久连接会这么做: 一 二 三 二 三 二 三 四
非持久连接这么做: 一 二 三 四 一 二 三 四 一 二 三 四

这就是这两个的区别   对应到http上  是这样的

假设有一个页面 请求了两个图片

持久连接 :  浏览器连接服务器  浏览器发送get请求  服务器发送图片数据  浏览器发送第二个get请求  服务器发送图片数据   关闭连接
非持久连接:浏览器连接服务器  浏览器发送get请求  服务器发送图片数据  关闭连接  浏览器连接服务器 浏览器发送第二个get请求  服务器发送图片数据   关闭连接

嗯嗯 就是这样的     我用c做了一个长连接和短连接的demo  在这里  分别有客户端和服务端的

那两个图我整理了好久才整理出来的   自己画的     参考资料:《计算机网络:自顶向下方法(原书第四版)》. 机械工业出版社

这是我们计算机网络课的教材。。。可惜之前没有好好上课。。。。现在自己重新学习了。。。