| |
|
开发:
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七层网络参考模型
物理层: 建立断开物理连接 数据链路层:物理寻址,差错校验 网络层:逻辑寻址 传输层:建立端口到端口的连接 会话层:会话管理 表示层:数据展示 应用层:用户接口
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)
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,科研保留
私有地址包括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
255、127、0为特殊地址 3.2子网掩码
例如,IPV4:192.168.2.101? ? 子网掩码:255.255.255.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协议
数据链路层的格式:目的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.dnsdns即域名解析,域名解析就是域名到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解析原理:
8.VLAN/TRUNK9.HTTP协议http(hyper text transfer protocol)超文本传输协议。
请求行:HttpMethod、uri、http协议版本 请求头 空行 请求数据
状态行:http协议版本、http状态码、OK 响应头: 空行 响应正文
200响应成功 302重定向 400请求语法错误 ?401未认证授权 ?402预留 403认证成功但权限不足 404找不到对应资源 407需要代理授权 408超时 500服务端处理请求错误 504网关请求远端服务超时 505不支持的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的消息头,表示访问控制所允许的来源),该请求头一般由浏览器添加。
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地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |