美文网首页
1、这么多设备向服务器发请求,服务器怎么知道某个响应结果应该回传

1、这么多设备向服务器发请求,服务器怎么知道某个响应结果应该回传

作者: 朴裕识 | 来源:发表于2017-02-09 18:11 被阅读0次

首先,一般的HTTP协议的请求,都是在TCP的3次握手之后再进行数据传输的。在这3次握手之后就已经“建立起了连接”。可以说在3次握手的时候就已经确定了源和目标的ip+端口(如果是IPv4 Internet Protocol version 4的话)。

那具体是怎么知道的呢?

1.源和目标之间发送的是数据包,是一段数据流。
2.这个IP包有自己的数据结构,如下:


*转载自http://blog.csdn.net/ns_code/article/details/29382883 *

3.而其中IP头部的数据结构如下:


转载自http://www.51testing.com/html/66/138366-216709.html

4.TCP头部的数据结构如下:


5.可以看到,IP头部结构中的Source Address和Destination Address,长度为32bit(最多可表示256的4次方),即源和目标的IP地址。

6.TCP头部结构中的源端口号和目的端口号,就标识了客户端和服务器中具体的某一个进程。

有了这些数据就能唯一确定源和目标,这样服务器的结果就能只响应给我,而不是响应给你。


另外,我们常说的“3次握手之后就建立起了连接,就能传数据了”,这个“建立起了连接”是啥意思?

“建立起了连接”是个笼统的说法,更准确的版本是“建立起了传输数据的环境”或者说“接收方和发送方,都知道自己要向什么地方发送数据,而且能够保证自己所得到的数据,就是发送方发的数据”。

这个环境至少需要两个条件:

  • 源和目标的IP+端口号
  • 源和目标双方都确认了起始序列号

第一点其实就是上面说的,第二点是这样:

首先
TCP 会通过三次握手来完成连接建立,具体过程是这样的:
1.客户端首先向服务端发送一个 SYN 包和一个随机序列号 A
2.服务端收到后会回复客户端一个 SYN-ACK 包以及一个确认号(用于确认收到 SYN)A+1,同时再发送一个随机序列号 B
3.客户端收到后会发送一个 ACK 包以及确认号(用于确认收到 SYN-ACK)B+1 和序列号 A+1 给服务端
转载自https://objccn.io/issue-10-6/

有了这些序列号,源和目标才能够保证数据的有效性,也就是我们说的“建立起了连接”

相关文章

  • 1、这么多设备向服务器发请求,服务器怎么知道某个响应结果应该回传

    首先,一般的HTTP协议的请求,都是在TCP的3次握手之后再进行数据传输的。在这3次握手之后就已经“建立起了连接”...

  • python静态服务器开发

    http协议 请求 响应 长连接:3次握手,浏览器发一送一次请求,服务器响应请求,浏览器发一送一次请求,服务器响应...

  • HTTP协议分类

    1.http请求协议:浏览器向服务器发起请求时需要遵循的协议2.http响应协议:服务器向浏览器发起响应的时候需要...

  • 服务器

    服务器 服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备...

  • Server/HTTP相关内容

    概念 请求和响应 浏览器向服务器发出请求,而服务器一般会监听某个端口比如80,而请求默认会发送到80端口,在接收到...

  • docker快速入门

    1 docker的组成 docker通过客户端向服务器发送给服务器守护进程,守护进程处理请求响应结果给客户端。 镜...

  • HTTP

    请求与响应 1.浏览器向服务器发送请求2.服务器接受请求3.服务器返回内容HTTP作用就是规定浏览器和服务器如何进...

  • mysql分布式-分片篇

    需求分析 1,⽤户请求量太⼤, 会导致web应⽤⽆法及时响应 -> 分布式服务器(分散请求到多个服务器上) 2,单...

  • http请求头 响应头

    通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。客户端向服务器发送一个请求,请求头包含请求...

  • 什么是服务器?

    一、介绍 服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具...

网友评论

      本文标题:1、这么多设备向服务器发请求,服务器怎么知道某个响应结果应该回传

      本文链接:https://www.haomeiwen.com/subject/sjrwittx.html