「Netty系列」彻底弄清网络七层协议TCP/IPIPTCP(Netty前置一)
Posted 花花和Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「Netty系列」彻底弄清网络七层协议TCP/IPIPTCP(Netty前置一)相关的知识,希望对你有一定的参考价值。
一 基础
1.1 概述
1 网络分层中的ios七层模型、TCP/IP协议族、TCP、IP,这些有什么不同
2 TCP协议通信过程中的三次握手和四次挥手到底是什么流程?
1.2 软件架构
在生活中,我们经常用QQ、微信、百度云盘、Goole、IE浏览器、火狐浏览器......。可以总结为两大类,c/s(客户端/服务端)和b/s(浏览器/服务器)结构。这两种架构是两台计算机通过某种协议来网络中进行通信。
1.3 基本概念(通信协议/ip/端口)
-
通信协议 就是定义了在网络中计算机之间进行通信的一种规则。因为电脑是由许许多多加的厂商来做的,如果传出的数据格式不一样、传输数据格式、解析数据的格式不一样,就没法实现所有电脑通信。
-
ip 在整个网络中,电脑的唯一标识。ip分为IPV4和IPV6,ipv4占用4个字节,ipv6占用16个字节。目前使用较多的还是ipv4。
-
端口 在计算机中,进程的唯一标识。端口号是用两个字节表示,取值范围为0-65535,0-1023基本为系统端口,我们写的程序端口号应在1024以上。
二 计算机通信分层
2.1 七成模型、TCP/IP协议族、TCP、IP这些是不是同一个东西?
1 ISO国际标准组织在研究网络通信,建立了OSI模型(开放系统互联参考模型)。即为标准的7层架构。(理论上分层模型)
2 TCP/IP协议族,最早由美国国防部的ARPA网项目,也被DoD模型。(实践过程中的模型)
3 TCP,IP这是网络分层中具体的协议。
2.2 访问淘宝经历了网络流程
1 我们在浏览器输入淘宝的网址。
2 (本机)浏览器将请求发送,应用层-》传输层-》网络层-》数据链路层
3 (网络传输过程)-》到路由器-》交换机
4 (淘宝服务器)-》到达淘宝服务器-》链路层-》网络层-》传输层-》应用层,获取数据
5 (响应数据)-》然后再原路返回。
三 网络传输层解析
3.1 Socket是什么?
Socket是位于应用层和传输层的一个抽象层。提供了一套接口来调用TCP/IP协议的API。
3.2 Socket通信流程
3.3 网络传输层的TCP协议详解
-
概述 TCP是Transmission COntrol Protocol的简称,中文名也叫做传输控制协议。它具有的特性如下。
a 数据传输前必须要建立连接,数据传输完,必须释放连接。
b 传输的数据无差错,不丢失,不重复,且顺序和源数据一致。
c 在传输的过程中,数据拆分为不同的段,也就是segment。
d 效率低,因为是面向连接的协议,通信之前必须要建立连接。 -
TCP首部进行详解源端口和目的端口:数据从哪个进程来到哪个进程去。
序号和确认号:TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传输流中,每个字节一个序号。
URG:表示本报文段中发送的数据是否包含紧急数据。URG=1,表示有紧急数据。后面的紧急指针字段 只有当URG=1时才有效。
ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才 有效。TCP规定,连接建立后,ACK必须为1。
PSH:告诉对方收到该报文段后是否应该立即把数据推送给上层。如果为1,则表示对方应当立即把数据 提交给上层,而不是缓存起来。
RST:只有当RST=1时才有用。如果你收到一个RST=1的报文,说明你与主机的连接出现了严重错误(如 主机崩溃),必须释放连接,然后再重新建立连接。或者说明你上次发送给主机的数据有问题,主机拒绝 响应。
SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的 报文。只有在前两次握手中SYN才置为1。
FIN:标记数据是否发送完毕。如果FIN=1,就相当于告诉对方:“我的数据已经发送完毕,你可以释放 连接了。
窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而 达到流量控制。
选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接 方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本 端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中 加入额外的零,以保证TCP头是32的整数倍
数据部分:TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段 仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时 的许多情况中,也会发送不带任何数据的报文段。
以上是关于「Netty系列」彻底弄清网络七层协议TCP/IPIPTCP(Netty前置一)的主要内容,如果未能解决你的问题,请参考以下文章