计算机网络通信原理识记点

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进行认证,然后伪造用户发出请求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值