加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数据在网络中是怎样传输的

发布时间:2022-05-21 02:16:53 所属栏目:大数据 来源:互联网
导读:整个请求交互过程分为了几个部分,首先最上层就是应用程序,接着往下是 Socket 库。 再下面就是操作系统的内部了,这里面就包括了协议栈,协议栈上半部分为 TCP 和 UDP ,它们都是负责数据的收发。 只是一个需要 连接,一个不需要连接可以直接收发数据,这两者
         整个请求交互过程分为了几个部分,首先最上层就是应用程序,接着往下是 Socket 库。
 
         再下面就是操作系统的内部了,这里面就包括了协议栈,协议栈上半部分为 TCP 和 UDP ,它们都是负责数据的收发。
 
         只是一个需要 连接,一个不需要连接可以直接收发数据,这两者的详细区别我会在后期文章单独讲解,这里大家先了解下就行。
 
         协议栈的下半部分是 IP 协议,用来真正将数据转变为网络包进行实际数据传送的媒介。
 
Proto: 表示协议类型。这里是 tcp ,如果用到了 udp 就会显示为 udp。
Local Address : 本机的 IP 地址。
Foreign Address : 通信对象的 IP 地址
state : 通信状态。ESTABLISHED 表示完成连接 ,CLOSE_WAIT 表示等待关闭,还有一个状态也很常见,LISTENING:等待对方连接。
当浏览器通过 Socket 库向协议栈发出 socket 调用时,协议栈就会根据申请执行创建套接字的操作。
 
协议栈首先会分配一个存放套接字的内存空间,然后往里面存入控制信息,这样套接字就创建好了。
 
连接操作的第一步就是在 TCP 模块处创建表示连接控制信息的头部。当 TCP 头部创建好后,TCP 模块会将信息传递给 IP 模块委托其进行发送。
 
IP 执行发送后,网络包会通过网络到达服务器,服务器上的 IP 模块将接收到的数据传递给 TCP 模块,TCP 模块根据头部信息找到对应的套接字,套接字中会写入相应的信息,然后将状态改为正在连接。
 
于此同时,在返回响应时,会将 ACK 控制位设为 1,代表已接收到网络包。服务器 TCP 模块会将响应消息通过 IP 模块向客户端做出响应。
 
客户端接收到响应后,其 IP 模块将信息传递给 TCP 模块,然后通过 TCP 头部信息确认连接是否成功,SYN 等于 1 就代表成功,客户端还会将 ACK 设置为1 并发回给服务器,服务器收到这个包后才算连接操作真正的完成。
 
建立连接后,就可以随时进行收发数据了,在调用 close 之前,连接会一直存在。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!