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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HCIA三 -> 正文阅读

[网络协议]HCIA三

应用层

表示层

网络层

介质访问控制层

物理层

OSI --- 开放式系统互联

OSI/RM
1979年,ISO(国际标准化组织)
OSI 核心思想:分层
什么叫做分层:属于同一层面的不同功能具有相同或相似的目的,不同层次之间的功能将存在
较大的差异。而上一层都是在下一层提供的服务的基础上提供增值服务。
分层的作用:1,保证各层次之间的独立性。
????????????????????? 2,更易于标准化
?? ??????????????????? 3,便于学习

取决于应用

?? 应用层

?? 表示层

?? 会话层

---- 维持网络应用和应用服务器之间的会话连接。会话层地址

实现应用到应用的传输(http协议,ftp协议)

??? 传输层

---- 端到端的传输 --- 端口号 --- (1 - 65535) 其中,1-1023 叫知名端口号?????????????????????????? (地址)

?? 网络层

???? 网络层

网络接口层

数据链路层

---- MAC(介质访问控制层) LLC(逻辑链路控制层) --- FCS(帧校验序列) --- 确保数据的完整性 --- CRC(循环冗余算法)

物理层

TCP/IP协议

标准模型

?对等模型

PDU --- 议数据单元

L1PDU
L2PDU
L3PUD
..
L7PDU

单位

应用层---- 数据报文

传输层---- 数据段

网络层---- 数据包

数据链路层 ---- 数据帧

物理层 ---- 比特流

封装 - 解封装
应用层 --- HTTP TCP 80端口(超文本传输协议)
????????????????HTTPS = HTTP + TLS TCP 443
????????????????FTP TCP 20/21 文件传输协议
????????????????TFTP UDP 69 简单文件传输协议
????????????????telnet TCP 23 远程登陆协议
????????????????DHCP UDP 67/68 动态主机配置协议
????????????????DNS UDP 53 域名解析协议
传输层
--- 端口号 TCP/UDP
网络层
--- IP地址 IP协议
数据链路层 --- MAC地址 ---- 以太网:早期局域网的解决方案,只能使用MAC地址进行寻
址,目前也作为广域网的解决方案
物理层

以太网Ⅱ型帧
Type --- 上层所使用的协议的类型

传输层 --- TCP/UDP

1,TCP是面向连接的协议,UDP是无连接的协议
2,TCP的传输是可靠的,而UDP的传输“尽力而为”
3,TCP可以进行流控,而UDP不行
4,TCP可以进行数据分段,而UDP不行
5,TCP的传输速度较慢,占用资源较大;UDP传输速度较快,占用资源小。

TCP/UDP的应用场景

TCP协议更适用于对效率要求较低,但是对准确性要求较高的场景;UDP协议更使用于对
效率要求较高,对准确性要求较低的场景。

什么是面向连接?

面向连接的意思就是 在数据传输之前,先使用预备的协议,建立点到点的连接,这之后再
进行数据传输。

TCP头部

16位源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。

16位目的端口号:16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。

32位序号:32位的序列号由接收端计算机使用,重新分段的报文成最初形式。当SYN出现,序列码实际上是初始序列码(Initial Sequence Number,ISN),而第一个数据字节是ISN+1。这个序列号(序列码)可用来补偿传输中的不一致。

32位确认序号:32位的序列号由接收端计算机使用,重组分段的报文成最初形式。如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。

4位首部长度:4位包括TCP头大小,指示何处数据开始。

保留(6位):6位值域,这些位必须是0。为了将来定义新的用途而保留。

标志:6位标志域。表示为:紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN。

16位窗口大小:用来表示想收到的每个TCP数据段的大小。TCP的流量控制由连接的每一端通过声明的窗口大小来提供。

窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16字节字段,因而窗口大小最大为65535字节。

16位校验和:16位TCP头。源机器基于数据内容计算一个数值,收信息机要与源机器数值 结果完全一样,从而证明数据的有效性。检验和覆盖了整个的TCP报文段:这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证的。

16位紧急指针:指向后面是优先数据的字节,在URG标志设置了时才有效。如果URG标志没有被设置,紧急域作为填充。加快处理标示为紧急的数据段。

选项:长度不定,但长度必须为1个字节。如果没有选项就表示这个1字节的域等于0。

数据:该TCP协议包负载的数据。

?

  • SYN(Synchronize): 用于发起连接数据包同步双方的初始化序列号。
  • ACK(Acknowledge):确认数据。
  • RST(Reset):这个标记用来强制断开连接。
  • FIN(Finish): 通知对方数据发送完毕,准备断开连接。
  • PSH(Push):告知对方这些数据包收到之后马上交给应用层,不能缓存。
  • URG:
    urg=1,紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据,不进入接收缓冲就直接交给上层进程,余下的数据要进入接收缓冲的)psh=1就是是把接收缓冲中排好序的那一段数据交给上层

TCP 头部最短是20个字节,TCP头部是可变长头部
伪头部校验:将 IP 协议中12个字节的内容(32位源IP,32目标IP,8位保留,8位协议,16位
总长度)联合TCP头部和数据部分一起进行校验。 ----- 反码相加法

两个对象分别为A和B进行建立和断开链接

TCP建立连接的过程 --- 三次握手?

A请求建立链接SYN=1,序号为X。

B确认ACK=1,序号num为x+1 , SYN=1.序号为y

A确认ACK=1,序号num为y+1,序号为x+1.

(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

简单来说,就是:

1、建立连接时,客户端发送SYN包(SYN=i)到服务器,并进入到SYN-SEND状态,等待服务器确认

2、服务器收到SYN包,必须确认客户的SYN(ack=i+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN-RECV状态

3、客户端收到服务器的SYN+ACK包,向服务器发送确认报ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。

?

TCP断开连接的过程 --- 四次挥手

A断开FIN=1

B确认ACK=1

B断开FIN=1

A确认ACK=1

?

(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

为什么是三次握手四次挥手

信道不可靠, 但是通信双发需要就某个问题达成一致. 而要解决这个问题, 无论你在消息中包含什么信息, 三次通信是理论上的最小值. 所以三次握手不是TCP本身的要求, 而是为了满足"在不可靠信道上可靠地传输信息"这一需求所导致的.

TCP没有半开方法的传输方法,但是有半关传输方法,如果新建连接也支持半开传输,那么也得四次握手而不是三次。

半关指的是一方发了fin表明我不发了,但是另外一方不发fin,这时候不发fin的一方还可以继续发数据。

TCP半关闭

  • 当TCP链接中A向B发送 FIN 请求关闭,另一端B回应ACK之后,并没有立即发送 FIN 给A,A方处于半关闭状态。
  • 此时A可以接收B发送的数据,但是A已经不能再向B发送数据。

TCP确保传输可靠性的手段 --- 确认,重传,排序,流控

网络层

--- IP协议

TTL --- 生存时间:数据包没经过一个路由器的转发,这个TTL值将会减1。当一个数据包的
TTL值为0时,将不会再被路由器转发,将直接丢弃。
UDP --- 17
TCP --- 6
ICMP --- 1

IP的分片

?

MTU --- 最大传输单元 --- 1500字节
TCP 分段 -- MSS值
--- 最大段长度

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 12:04:52  更:2021-08-16 12:07:09 
 
开发: 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 19:44:10-

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