| |
|
开发:
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协议包负载的数据。 ?
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确保传输可靠性的手段 --- 确认,重传,排序,流控网络层--- 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地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |