IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络协议和Netty(3):TCP/IP协议层级结构间消息的传输 -> 正文阅读

[网络协议]网络协议和Netty(3):TCP/IP协议层级结构间消息的传输

前言:

笔者在学习前一直认为TCP/IP仅仅是一个协议,学习后发现,其实是包含多种关系的协议族。作为java程序员,比起在一些专业名词的定义,其实更注重的是定义后包含的原理。

提问:

一个消息从客户端请求的发起和服务端请求的接受,这之间报文经历了怎么怎样的过程?

TCP/IP 协议族

TCP/IP(Transmission Control Protocol/Internet Protocol),译名为传输控制协议/因特网
互联协议,是 Internet 最基本的协议、Internet 国际互联网络的基础。

它由网络层的 IP 协议和传输层的 TCP 协议组成。协议采用了 4 层的层级结构。然而在很多情况下,它是利用 IP 进行通信时所必须用到的协议群的统称

总结:TCP/IP其实是个协议家族,由很多个协议组成,并且是在不同的层, 是互联网的基础通信架构。

TCP/IP 如何在网络传输中数据?

网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层
传过来的数据。首部的结构由协议的具体规范详细定义。在数据包的首部,明确标明了协议
应该如何读取数据。

结合第一章讲解网络协议和Netty(1)OSI模型和TCP/IP模型

?1)应用程序处理

首先首先应用层获取报文,然后进行编码处理,这些编码相当于 OSI 的表示层功能。
编码转化后,报文不一定立刻被发送,这种何时建立通信连接何时发送数据的管理功能,
相当于 OSI 的会话层功能。

(这里我们发现其实TCP/IP的第一层包含着OSI的应用层、表示层和会话层。)

2)传输层的处理
TCP 根据应用的指示,负责建立连接、发送数据以及断开连接。TCP为了保证将应用层发来的
数据顺利发送至对端的可靠性,在应用层数据的前端附加一个TCP 首部。

3) 网络层的处理
IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做传输数据,并在 TCP 首部的前端
加上自己的 IP 首部。IP 包生成后,参考路由控制表决定接受此 IP 包的路由或主机。

4) 数据链路层的处理
从 IP 传过来的 IP 包对于以太网来说就是数据。给这些数据附加上以太网首部并进行发送
处理,生成的以太网数据包将通过物理层传输给接收端。

5)物理层的处理

从数据链路层获取到数据,通过物理设备,传输到对端的物理层。

6)物理层的处理(接收端)

接受到发送端发送的数据,并传入数据链路层。

7)数据链路层的处理(接收端)
主机收到以太网包后,首先从以太网包首部找到 MAC 地址判断是否为发送给自己的包,若
不是则丢弃数据。
如果是发送给自己的包,则从以太网包首部中的类型确定数据类型,再传给相应的模块,如
IP、ARP 等。这里的例子则是 IP 。

8)网络层的处理
IP 模块接收到数据后也做类似的处理。从包首部中判断此 IP 地址是否与自己的 IP 地址匹配,如果匹配则根据首部的协议类型将数据发送给对应的模块,如 TCP、UDP。这里的例子则是 TCP。
另外,对于有路由器的情况,接收端地址往往不是自己的地址,此时,需要借助路由控制
表,在调查应该送往的主机或路由器之后再进行转发数据。

9) 传输层
在 TCP 模块中,首先会判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据被完整地接收以后,会传给由端口号识别的应用程序。

注意:这一步非常重要,数据传输时,我们的数据往往会被拆分成多个数据包。当多个数据包进行分批次传输时,可能由于网络的原因会导致丢包,或者接受包顺序不一致,导致我们接收的数据有问题。而这个问题传输层会帮我们解决。

10)应用程序的处理
接收端应用程序会直接接收发送端发送的数据。通过解析数据,展示相应的内容。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:51:07  更:2021-07-24 11:53:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:25:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码