那么创建通道的第一步 , 大家一定耳熟能详 , 就是TCP的三次握手 。欸?为啥是三次 , 不是一次 , 不是三十次?嗯 , 因为三次 , 是双方可以最小确认彼此的次数 。再解释下 , 也就是说 , 是客户端与服务器各自都可以收到一个来回的信息 , 还记得面向连接不?
我们来看看三次握手是咋握的 。

文章插图
欸?你这不对啊 , 你这哪有握手的过程 , "与服务器建立连接"这几个字 , 就代表了三次握手的内容 。当然 , 真正的三次握手是这样的:

文章插图
我们来看上图哈 , 里面还有点东西的 。在最开始的时候 , 客户端和服务器都处于关闭的状态 , 然后服务器会处于监听的状态 。当客户端发起第一次握手连接请求时 , 客户端会设置当前的状态为SYN_SEND的状态 , 注意这里发送的seq=x , **这个x并不是一个随机数 , 而是当前的TCP包的序号** , 注意这一点 , 我们描述完整个过程会在说说这个序号 。
服务器收到这个消息后 , 就会把x+1作为ack结果 , 也就是返回的消息 , 在返回的消息中还给回客户端一个seq为y , 同样的 , 这个y也是一个序号 。那么此时服务器就处于SYN_RCVD也就是接收到了消息的状态 。
继续 , 当客户端收到了服务器的回信后 , 知道这个连接已经通知服务器建立了 , 于是客户端把服务器端传过来的seq再加1作为ack应答给服务器 , 并且设置当前状态为ESTABLISHED , 也就是建交成功 , 当服务器收到结果 , 一计算seq和ack没问题 , 那么服务器也设置为建交成功 , 可以传递数据了 。
这就是三次握手 。那为啥要有seq和ack呢?我直接喊一声 , 你答应一声 , 然后我再喊一声不就完事了么 , 非要加一加一干啥啊 。
嗯~这是为了记录当前的包是从哪开始的 , 你想像一下 , 在马路上跑的车有很多 , 有的车可能跑丢了 , 或者跑到别的国家了 , 压根不回来了 , 你咋整?所以TCP每发一个包都会记录一下 , 也就是递增1 , 你的seq和ack是要属于本次请求要求递增的包序号才算是属于本次建交的应答和响应 。
那么接下来就要开始传输数据了 , 应用层把HTTP数据包都准备好了 , 已经迫不及待要出发了 , 那么到了TCP这一层后 , TCP会往这个包里加点东西:

文章插图
TCP会在应用层的HTTP包的基础上再加上TCP头 , 这里面包含了源端口号和目标端口号 , 有了端口号 , 我们就可以确定目标端口号从而找到目标应用 , 当信息返回的时候还会用到源端口号 , 这个我们后面再说 。
第三层/网络层:5号楼2单元101?网络层提供路由和寻址的能力 , 由于在TCP/IP协议族中 , 网络层的能力由IP协议来实现 , 所以又称为网络层又可以叫做IP层 。
但是网络层可不仅仅只有IP协议 , 还有比如ICMP(互联网控制消息协议)、IGMP(互联网组管理协议)、BGP(边界网关协议)、RIP(路由信息协议)、OSPF(开放式最短路径优先协议)、RARP(逆地址解析协议)等等 。我们简单了解下就可了 。
经验总结扩展阅读
- 真正的南方是哪几个省
- 哪些星座累觉不爱
- 哪个星座的暖男会给你幸福?
- 哪些星座男分手时最不淡定
- 哪些星座女对壁咚没免疫力
- 爱情里最死心塌地的星座
- 七海ybb是什么梗
- 口罩的单位
- 如何一步搞定十二星座男
- 星座女搞定暴脾气恋人要用什么招?