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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络通信原理识记点 -> 正文阅读

[网络协议]计算机网络通信原理识记点

1.OSI七层网络参考模型

  • ISO于1984年制定

物理层: 建立断开物理连接

数据链路层:物理寻址,差错校验

网络层:逻辑寻址

传输层:建立端口到端口的连接

会话层:会话管理

表示层:数据展示

应用层:用户接口

  • tcp/ip 协议簇(实际应用五层网络模型)
? ? ? ? /常见协议数据格式设备

物理层

比特流(二进制流)网卡
数据链路层数据帧(mac)交换机
网络层IP/ICMP/ARP...数据包(IP)路由器
传输层TCP/UDP...数据段(port)防火墙
应用层HTTP/FTP/DNS...数据计算机

2. 数制转换

2.1其他进制转十进制,位权展开法

设进制为a,?数值为xyz,转换函数记为f(xyz),则数字个数为3,有如下公式

f(xyz) = x*a^(3-1) + y*a^(3-2)?+ z*a^(3-3)

? ? ? ? ? = x*a^2 + y*a^1 + z

套用上述公司做如下示例:

11111

  • 十进制 -> 十进制:

11111? = 1*10^4?+ 1*10^3?+ 1*10^2?+ 1*10^1 + 1 = 10000 + 1000 + 100 + 10 + 1 = 11111

  • 二进制 -> 十进制:

11111 = 1*2^4 +?1*2^3?+?1*2^2?+?1*2^1 + 1 = 16 + 8 + 4 +?2 + 1 = 31

  • 八进制 -> 十进制:

11111 = 1*8^4 +?1*8^3?+?1*8^2?+?1*8^1 + 1 = 4096 + 512 + 64? + 8 + 1 = 4681

?十六进制... 略

2.2 十进制转其他进制,短除倒叙取余

该方法没有推到出公式,描述一下计算方式如下:

设进制为a,数值为xyz,使用xyz递归除以a,直到余数除不尽a为止,所有的余数放到一个集合中,然后倒叙拼接余数。

100?

  • 十进制 -> 二进制

100 / 2? ?->? 商:50? 余:0

50? / 2? ? ->? 商:25? 余:0

25? / 2? ? ->? 商:12? 余:1

12? / 2? ? ->? 商:6? ? 余:0

?6? ?/ 2? ? ->? 商:3? ? 余:0

?3? ?/ 2? ? ->? 商:1? ? 余:1

?1? ?/ 2? ? ->? 商:0? ? 余:1

倒叙拼接:1100100

  • 十进制 -> 八进制

?100 / 8? ->? 商:12? 余:4

?12? /? 8? ->? 商:1? ? 余:4

? 1? ?/? 8? ->? 商:0? ? 余:1? ? ??

倒叙拼接:144

十进制 -> 十六进制

100 / 16? ->? 商:6? ?余:4

6? ? /?16? ->? 商:0? ? 余:6

倒叙拼接:64

?3. IP与子网掩码

3.1IP地址介绍

IP地址分为IPV4和IPV6两种

IPV4由32位二进制组成,以点分形式显示为4组十进制数字(0-255)

  • IPV4分为A、B、C、D、E五类地址

A类? 范围:1.0.0.0-126.255.255.255?,网络位为前8位,主机位为后24位(2进制),范围大

B类? 范围:128.0.0.0-191.255.255.255,网络位为前16位,主机位为后16位(2进制)

C类? 范围:192.0.0.0-223.255.255.255,网络位为前24位,主机位为后8位(2进制),范围小

D类? 范围:224.0.0.0-239.255.255.255,组播地址

E类? 范围:240.0.0.0-254.255.255.255,科研保留

  • IPV4私有地址

私有地址包括3组,私有地址不能在Internet上使用

A类:10.0.0.0-10.255.255.255

B类:172.16.0.0-172.31.255.255

C类:192.168.0.0-192.168.255.255

  • IPV4特殊地址

255、127、0为特殊地址

3.2子网掩码

  • 子网掩码是用来计算IP所属网段的,同一网段内的设备才可以互相通信。
  • 子网掩码由32位二进制组成,网络部分全为1,主机部分全为0。
  • 因此子网掩码对应只有255和0两种取值。
  • 子网掩码与IP地址进行二进制逻辑与计算可得到对应的网段。

例如,IPV4:192.168.2.101? ? 子网掩码:255.255.255.0

  • 二进制逻辑与运算口诀:11为1,否则为0.

11000000? ? ? 10101000? ? ? 00000010? ? ? ? 01100101? ? ? 192.168.2.101? ?IPV4

11111111????????11111111????????11111111? ???????00000000? ? ? 255.255.255.0? ?子网掩码

11000000? ? ? ?10101000? ? ??00000010? ? ? ?00000000? ? ?192.168.2.0? ? ? ? 计算得网段

  • 计算器计算如下:

192 and 255? -> 192? ? ? ? ?

168 and 255? -> 168

2? ? ?and 255? -> 2

101 and 0? ? ? ->?0

以上为计算器算得

......

计算得出当前IP192.168.2.101对应网段为:192.168.2.0

192为C类地址,因此主机位为后8位,所以该网段192.168.2.0可用IP地址为192.168.2.1-254

4.网络通信设备介绍

4.1网络传输介质

  • 网络传输信号:

数字信号,不连续的,计算机内部识别的是这种信号,类似开、关,开代表1,关代表0

模拟信号,连续的,电话线传输的就是这种信号。

  • 有线传输介质:

双绞线,传播速率 2.3*10^8m/s,包含568A 568B两种

????????直通线,不同设备连接

? ? ? ? 交叉线,相同设备连接

? ? ? ? 全反线,配置线连接

光纤,传播速率 2*10^8m/s

通过以上两种有线介质的速率相比较,其实光纤的传播速率要比双绞线还低一些,但是光纤上网快这是常识,网上科普一番,加上自己的思考,大致得出如下结论:

光纤传播的光信号频率远高于电波,频率越高携带的有效载荷就越多,因此携带的信息也就越多,

传播速度都差不多是每秒20万公里,谁携带的信息越多,肯定就越快。

以上结论基于一个常识:

电、可见光、紫外线、红外线等等都属于电磁波。

c=λ*f? ? c为光速即电磁波在真空中的传播速度,λ为波长,f为频率。那么,c是固定的,f和λ的值就互有高低。

参考下图可以有个清晰的理解。

  • 无线介质:

无线介质主要指电磁波,包含无线电、红外线、紫外线、可见光、激光等等

蓝牙、wifi、GPS、卫星电话等都属于无线介质网络传输范畴。

4.2网卡、中继器

mac地址,由48位二进制组成,前24位为厂商标识,后24位为厂商内部编号,显示为12位16进制,两两以-分显示,例如:61-3E-69-FC-4D-E2

dos查看mac地址命令:ipconfig/all |findstr "物理地址"

中继器用于放大网络信号延长传输距离

4.3 交换机

  • 数据帧格式(以太网帧):

目的mac? ?源mac? ? 类型? ? ? ? ? ? ? ?数据? ? ? ? ? ? ?帧校验序列

6byte? ? ? ? 6byte? ? ? 2byte? ? ? ? 46-1500byte? ? ? ? ?4byte

类型:指上层网络协议,例如IP协议

最小的数据帧大小=6+6+2+4+46=64byte

  • 交换机

交换机主要使用于企业中局域网内网络通信

交换机属于七层网络模型中数据链路层设备

交换机识别mac地址来进行数据转发

交换机可以分割冲突域实现全双工通信

1.交换机工作原理:

收到来自源主机的数据,存储源主机mac

交换机查询mac列表,未知目标主机

广播到所有主机 (广播)

目标主机收到数据后响应交换机,存储目标主机mac

交换机收到目标主机的响应转发给源主机 (单播)

源主机再次发送数据到交换机

交换机查询mac列表,已知目标主机mac

交换机转发数据给目标主机(单播)

目标主机响应交换机

交换机转发目标主机的响应给源主机

...

交换机mac地址表的过期时间为默认300秒

2.单、双工:

单工:指的是数据传输方向为单向的,只能发,或只能收? ?(单信道)

半双工:同一时刻数据传输方向为单向,但是不同时刻可以双向传输? (单信道)

全双工:数据传输方向为双向,能发能收? ?(双信道)

3.冲突域

当多个主机通过一个接口与交换机进行数据交互时,会产生冲突,导致通信效率降低。

交换机内部通过矩阵结构连接各个接口以降低冲突的可能,各个接口之间都使用独立的线路通信,参考下图理解:

?4.广播域

交换机只分割冲突,所有端口都属于同一个广播域,所以任何一个接口广播,其他接口都可以收到数据。

5.交换机相关操作命令:(略)

ensp华为交换机模拟器

5.IP协议

  • IP协议报文格式

数据链路层的格式:目的mac、源mac、协议类型

以下使用wireshark网络抓包工具抓取的一个IP报文来解释说明

version[版本]:4? ? #IP协议包括IPV4或IPV6,占用4bit

Header length[首部长度]:20? ? ? ? #表示当前IP报文首部占用字节数。--占用4bit

Differentiated services feild[优先级与服务类型](区分服务字段):#用于区分数据的优先级,例如图片、视频、语音,字符串等其中语音数据的优先级最高。--占用8bit

Total length[总长度]:60? ? ? ? #当前IP数据包总长度占用60字节。--占用16bit

Identification[标识]:0x3970(14704)? ? ? ? #用于标记当前包在一份完整数据中的序号。--占用16bit

Flags[分段标志]:0x02 (Don`t Fragment)? ? ? ? #由于带宽的不同,数据包可能需要分片,该字段表示当前数据包是否需要分片。--占用3bit

Fragment offset[分段偏移]:0????????#如果需要分片,该字段表示分片的个数。--占用13bit

Time to live [TTL]:128? ? ? ? #当前IP数据包在网络中每经过一个路由器-1,直到为0则被丢弃,--占用8bit

Protocol[协议]:ICMP (1)? ? ? ? #表示当前数据包交给的上层对应的协议号,1表示ICMP。ICMP是比较特殊的一种网络层传输协议,它配合着IP数据报的提交,ICMP是封装在IP数据报中进行发送的,只是看起来有点类似TCP传输层的协议??--占用8bit

Header cheksum[首部校验和]:0x8B08? ? ? ? #指当前数据包校验结果,--占用16bit

Source[源地址]:192.168.2.101? ? ? ? #? --占用32bit

Destination[目的地址]:192.168.2.102? ? ? ? #? --占用32bit

##以上为IP报文首部,共占用160bit=20byte

可选项:#占用0-40byte, 通常为空,因此IP报文头部通常占用20byte

数据:? ? ? ? #数据包

  • 常用网络抓包工具

tcpdump, linux系统网络抓包工具,sendip、tcpreply为发包工具

wireshark

科来网络分析系统?

6.TCP/UDP协议

6.1tcp协议概述

tcp协议为OSI七层模型中传输层的协议

tcp协议在java编程语言中没有对应实现,java编程语言中通过socket封装了C语言库的socket,所以java的Socket其实是在调用C语言的实现,由于不熟悉C语言,目前还不清楚tcp具体的实现是在C层面还是汇编层面?知道的大神评论区科普一下。

java当中的java.net.SocketImpl即是基于tcp协议,java.net.DatagramSocket基于udp协议。

6.2tcp数据报文

tcp报文在IP报文首部的后面

以下使用wireshark网络抓包工具抓取的一个tcp报文来解释说明:

Source Port[源端口]:telnet[23]????????#占用16bit

Destination Port[目标端口]:49296????????#占用16bit

Sequence number[序列号]:19? ? ? ? #占用32bit

Next Sequence number[下一个序列号]:25????????#占用32bit

Acknowledgement number[确认序列号]:10????????#占用32bit

Header Length[tcp报文首部长度]:20bytes? ? ? ? #占用4bit

Flags标志位,包含以下子字段起到控制阀的作用:#占用

????????Acknowledgement:#确认序列号开关,回复另一端时的确认位,值为1

? ? ? ? SYN:1????????#请求连接开关,发起连接请求时该值为1

? ? ? ? FIN:#请求断开开关,发起断开请求时该值为1

? ? ? ? PUSH:#类似紧急指针开关,开启时数据不缓存直接进入进程,值为1

? ? ? ? Reset:#连接建立完成的开关,值为1

? ? ? ? Urgent:#紧急指针开关

????????Reserverd: Not Set

? ? ? ? Nonce:Not Set

? ? ? ? cwr:Not Set

Window size[窗口大小]:8192? ? ? ? #用于说明可接收数据的字节大小,不同接口之间带宽不同可能接收的数据大小不同? --占用16bit

Checksum[校验和]:0x8ab7 [validation disabled]????????#校验和? --占用16bit

保留位:#默认为空,抓包不显示? ? ? ? --占用6bit

6.3tcp可靠性原理

下图抓包素材来自计算机网络通信原理教程,仅供个人学习使用

  • 三次握手

第一次握手,client发送syn,seq(client)到server,请求建立连接

第二次握手,server回复syn、ack,ack=seq(client)+1,seq(server),允许建立连接

第三次握手,client回复server,ack =?seq(server) + 1,seq =?seq(client)+1,建立连接

开始传输数据

......

以下模拟tcp三次握手:

? ? ? ? ? ? ? ? FLAGS[SYN=1],seq=x

client ----------------------------------------------------------------------------> server

? ? ? ? ? ? ? ? FLAGS[SYN=1,ack=1],seq=y,ack=x+1

client <---------------------------------------------------------------------------- server

? ? ? ? ? ? ? ? FLAGS[ack=1],seq=x+1,ack=y+1

client ----------------------------------------------------------------------------> server

  • 四次挥手

断开连接可由客户端与服务端任意一方发起请求

第一次挥手,client发送fin、ack,seq(client),请求断开连接

第二次挥手,server回复fin、ack,ack=seq(client)+1,seq(server),确认断开

第三次挥手,server发送fin、ack,ack=seq(client)+1,seq(server),请求断开

第四次挥手,client回复fin、ack,seq=seq(client)+1,ack=seq(server)+1,确认断开

以下模拟tcp三次握手:

? ? ? ? ? ? ? ? FLAGS[FIN=1,ack=1],seq=x

client ----------------------------------------------------------------------------> server

? ? ? ? ? ? ? ? FLAGS[ack=1],seq=y,ack=x+1

client <---------------------------------------------------------------------------- server

? ? ? ? ? ? ? ? FLAGS[FIN=1,ack=1],seq=y,ack=x+1

client <---------------------------------------------------------------------------- server

? ? ? ? ? ? ? ? FLAGS[ack=1],seq=x+1,ack=y+1

client ----------------------------------------------------------------------------> server

7.dns

dns即域名解析,域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成,之所以使用域名替换IP是为了方便人的记忆。

IPV4 域名解析根服务器13台,其中主根1台在美国,辅根12台,9台在美国,日本、英国、瑞典各1台。

IPV6 域名解析根服务器25台

dns域名空间结构:根域、顶级域、二级域

根域:"."

顶级域:".com"、".org"、".net"、".edu"、".gov"、".mail"、等等

.com:商业机构

.org:非盈利非政府组织机构

.gov:政府组织机构

.net:网络机构

.edu:教育机构

.mail:邮箱

.cn:中国

.us:美国

.jp:日本

.uk:英国

.int:国际组织

...

二级域:

...

域名长度限制255个字符

dns解析原理:

  • 递归查询:主机向本地dns服务器查询,由本地dns向上级dns查询上级dns再向上级dns查询的过程,下图为递归查询。

  • 迭代查询:主机向本地dns服务器查询,由本地dns多次向其他dns查询的过程,下图为迭代查询。

8.VLAN/TRUNK

9.HTTP协议

http(hyper text transfer protocol)超文本传输协议。

  • http请求报文格式如下:

请求行:HttpMethod、uri、http协议版本

请求头

空行

请求数据

  • http响应报文格式如下:

状态行:http协议版本、http状态码、OK

响应头:

空行

响应正文

  • http常见状态码:

200响应成功

302重定向

400请求语法错误 ?401未认证授权 ?402预留 403认证成功但权限不足 404找不到对应资源 407需要代理授权 408超时

500服务端处理请求错误 504网关请求远端服务超时 505不支持的http协议版本

  • http常见请求头

Accept:可接受的响应MEME类型,示例:application/json

Authorization:请求时填的认证信息,示例:Basic d2ViQXBwOjEyMzQ1Ng==

Cookie:由上一次请求服务端Set-Cookie设置的cookie,示例access_token=xxx;refrush_token=xx;

Content-Length:请求体长度,8进制

Content-Type:请求体MEME类型,示例:application/json

user-agent:浏览器标识符,示例:Mozilla/5.0 (Windows NT 10.0; WOW64) ... Chrome/70.0.3538.67 Safari/537.36

origin:发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加入一个Access-Control-Allow-Origin的消息头,表示访问控制所允许的来源),该请求头一般由浏览器添加。

  • http常见响应头:

Access-Control-Allow-Origin:指定哪些网站可以跨域资源共享,*表示所有,示例:

Allow:对于特定资源允许的HttpMethod,示例:GET

Cache-Control:从服务器端到客户端之间的所有缓存机制,是否允许缓存,及缓存时间,示例:no-cache

Content-Encoding:响应资源所使用的编码类型,示例:utf-8

Content-Language:响应内容使用的语言,示例:zh-cn

Content-Type:响应体的MEME类型

Content-Length:响应体长度

Expires:指定一个过期时间,超过则认为响应过期

Refresh:默认5秒后,重定向到该响应头指定的url,示例:5; url=http://itbilu.com

Set-Cookie:设置HTTP CookieStatus:http状态码,示例:200 OK

  • 常见网络攻击手段:

- XSS 攻击[跨站脚本攻击],攻击者在 Web 页面中插入恶意脚本,当用户浏览页面时,促使脚本执行,从而达到攻击目的

- Dos攻击[分布式拒绝服务],发送大量请求,使服务器瘫痪

- CSRF攻击[跨站请求伪造],用户本地存储cookie,攻击者利用用户的cookie进行认证,然后伪造用户发出请求

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

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