【网络基础知识】

一、什么是网络?

网络是由网络互联设备通过传输介质网络终端设备连接起来,进行资源共享、信息传输的平台。
1.网络互联设备:连接网络设备(路由器、交换机
2.传输介质:传输信号(网线、光纤、同轴电缆
3.网络终端设备:使用网络的设备(手机、电脑、ipad等)

二、OSI-开放式系统互联参考模型(规范网络的一个标准)-ISO(国际标准化组织)

OSI七层参考模型描述
7-应用层通过人机交互来实现各种各样的服务(应用程序app)
6-表示层将逻辑语言转换成二进制语言(翻译) 进行编码、解码、加密、解密
5-会话层针对传输的数据建立一条端到端的虚拟会话连接(防止不同类型的数据相互干扰)发现、建立、维持、终止会话进程
上三层:产生数据的地方-程序猿下四层:运输数据的地方-工程师
4-传输层三个作用:abc
a.区分流量(根据端口号来区分不同的服务)端口号:0~65535 端口号的分类:1.保留端口号:0(用于网络编程)2.静态端口号/著名:1~1023(每一个端口号对应一个服务呈永久绑定关系)3.动态端口号:1024~65535(但当一个端口号对应一个服务时,呈绑定关系)
b.选择数据传输方式(可靠还是不可靠传输)TCP:传输控制协议 -面向连接的可靠传输协议 UDP:用户数据报文协议-非面向连接的不可靠传输协议 可靠(保证数据一定要传输给对方):确认机制、重传机制 面向连接(双方可以相互通信):三次握手
c.数据分段MSS 最大段长度 1480B MTU 最大传输单元 1500B
3-网络层编址、寻址 ip地址的作用:寻址 代表设备:路由器 编址协议:IPV4(32个二进制编址)、IPV6(128个二进制) 在这里插入图片描述
2-数据链路层根据链路不同实现不同的封装(局域网封装[以太网封装:源目MAC地址+类型字段]、广域网封装[ppp封装])包括两个子层:MAC-媒介访问控制子层-根据MAC地址来进行物理寻址(MAC地址-物理地址,是固定不变的)LLC-逻辑链路控制子层-为上层服务提供FCS校验 代表设备:交换机
1-物理层定义电气电压、光学特性、接口规范

在这里插入图片描述
1.TCP/Ip stack与OSI(开放式系统互联模型)的区别:

TCP/IP 协议栈(四层)应用层(应用层、表示层、会话层)、端到端层(传输层)、互联网层(网络层)、网络接口层(数据链路层、物理层)OSI (七层)
相同点:两者都是模型化层次化、下层为上层提供支持、每层协议彼此相互独立
不同点:1.OSI先有模型才有协议,TCP/IP stack先有协议后有模型 2.OSI支持多种网络层协议,TCP/IP协议栈只适用于IP协议簇(IPV4 IPV6) 3.层数量不一样 4.OSI一般用于理论,TCP/IP用于工业生产 5.OSI模型数据封装必须完整(dhcp),TCP/IP支持跨层封装(ospf)

2.什么是路由器?用于连接局域网与广域网的设备
作用:划分广播域,连接不同网络,路径选择,路由转发,跨网段通信,NAT地址转换

3.什么是交换机?是一个含有MAC地址表的二层设备
作用
a.提供接口,无限延长传输距离
b.解决冲突域:CSMA/CD,FIFO
c.提供部分安全功能:提供用户数据交换”专用通道”、VLAN技术隔离广播

4.什么是网关? 三层设备与二层设备直接相连的接口地址 路由器也是一个网关

5.常见的端口号:

协议端口号
ftptcp 20(数据传送端口) 21(数据控制端口)
tftp(简单文件传输协议)TCP 69
telnetTCP 23 明文
SSH(带安全外壳的远程登录)TCP 22 密文
httpTCP 80
httpsTCP 443
SMTP(发邮件)TCP 25
POP3(收邮件)TCP 110
DNSTCP/UDP 53
VNCTCP 5900

6.TCP传输控制协议:面向连接的可靠传输协议
面向连接:三次握手、四次断开
三次握手:
1.客户端:发送SYN(同步序列号请求)-[seq(记录发送的次数)=100,ctl(标志位)=SYN]
2.服务端:接收SYN,并发送SYN,ACK-[seq=300,ack=101,ctl=SYN,ACK]
3.客户端:建立会话,发送ACK-[seq=101,ack=301,ctl=ack]
在这里插入图片描述
三次握手牵扯到的状态转换:
LISTEN 表示socket已经处于listen状态了,可以建立连接;
SYN_SENT 表示socket在发出connect连接的时候,会首先发送SYN报文,然后等待另一端发送的确认报文(ACK),表示这端已经发送完SYN报文了;
SYN_RCVD 表示一端已经接收到SYN报文了;
ESTABLISHED 表示已经建立连接了,可以发送数据了。
在这里插入图片描述
四次断开:
1.客户端:发送FIN,请求断开连接-[seq=101,ack=301,ctl=FIN,ACK]
2.服务端:发送ACK-[seq=301,ack=102,ctl=ACK]
3.服务端:发送FIN-[seq=301,ack=102,ctl=ACK]
4.客户端:ACK-[seq=102,ack=302,ctl=ACK]
在这里插入图片描述
四次断开的状态转换:
第一次挥手:

Clien发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

第二次挥手:

Server收到FIN后,发送一个ACK给Client,Server进入CLOSE_WAIT状态。

第三次挥手:

Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:

Client收到FIN后,Client进入TIME_WAIT状态,发送ACK给Server,Server进入CLOSED状态,完成四次握手。
在这里插入图片描述
7.为什么TCP协议要进行三次握手?
答:TCP协议是一个面向连接的可靠的协议,必须确保双方的接收和发送能力。最主要目的是保证连接是双工的。
第一步:客户端发送网络包,服务器收到了(确保了客户端的发送能力、服务端的接受能力是正常的)
第二步:服务器发包,客户端收到了(服务端的接收能力、发送能力,客户端的发送能力正常。此时,不能确认客户端的接受能力是否正常
第三步:客户端发包,服务端收到了(客户端的接收、发送能力 正常,服务器自己的发送、接收能力正常)

问题一:tcp协议为什么是三次握手而不是两次握手???为了防止已失效的连接请求报文段又突然传送到服务器,因而产生错误
两次握手的话,服务端会认为可以通信(不考虑客户端是否可以通信),客户端不会向服务端发送数据,就会造成服务器端资源浪费
一端(client)A发出去的第一个连接请求报文并没有丢失,而是因为某些未知的原因在某个网络节点上发生滞留,导致延迟到连接释放以后的某个时间才到达另一端(server)B。本来这是一个早已失效的报文段,但是B收到此失效的报文之后,会误认为是A再次发出的一个新的连接请求,于是B端就向A又发出确认报文,表示同意建立连接。如果不采用“三次握手”,那么只要B端发出确认报文就会认为新的连接已经建立了,但是A端并没有发出建立连接的请求,因此不会去向B端发送数据,B端没有收到数据就会一直等待,这样B端就会白白浪费掉很多资源。如果采用“三次握手”的话就不会出现这种情况,B端收到一个过时失效的报文段之后,向A端发出确认,此时A并没有要求建立连接,所以就不会向B端发送确认,这个时候B端也能够知道连接没有建立。

问题2:为什么建立连接是三次握手,四次不可以吗
第一次握手:

Client什么都不能确认   
Server确认了对方发送正常

第二次握手:

Client确认:自己发送正常,对方发送/接收正常
Server确认:自己接收正常 ,对方发送正常

第三次握手:

Client确认:自己发送/接收正常, 对方发送/接收正常
Server确认:自己发送/接收正常,对方发送/接收正常

所以通过三次握手确认双方收发功能都正常,四次也可以但是显得比较多余。

8.TCP协议为什么进行四次挥手?
当收到对方的FIN报文时,仅表示对方不再发送数据但还能接收收据,我们也未必把全部数据都发给了对方,所以我们可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方表示同意关闭连接。因此我们的ACK和FIN一般会分开发送。

问题一:四次挥手中的状态为什么需要TIME_WAIT状态?
1、可靠的终止TCP连接
2、保证让迟来的TCP报文段有足够的时间被识别并丢弃
1)为实现TCP这种全双工连接的可靠释放
这样可让TCP再次发送最后的ACK以防这个ACK丢失(另一端超时并重发最后的FIN)这种2MSL等待的另一个结果是这个TCP连接在2MSL等待期间,定义这个连接的插口(客户的IP地址和端口号,服务器的IP地址和端口号)不能再被使用。这个连接只能在2MSL结束后才能再被使用。
2)为使旧的数据包在网络因过期而消失
每个具体TCP实现必须选择一个报文段最大生存时间MSL。它是任何报文段被丢弃前在网络内的最长时间。

补充: 当服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而当关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

三、数据的封装与解封装

封装mac(源目mac地址)+ip(源目ip)+tcp/udp(源目端口)+data+FCS校验
解封装把比特流格式化数据帧,拿掉FCS校验,然后依次拿掉Mac地址,ip地址,tcp/udp,数据(二进制语言转换成逻辑语言)

1.各个层的PDU是什么?

PDU(协议数据单元)
4-传输层数据段
3-网络层数据包
2-数据链路层数据帧
1-物理层比特流

2.TCP报头
在这里插入图片描述
注:其中resv可以保证QOS(服务质量)标志位(fin/syn/ack/urg)生效是1不生效0
ACK:确认序号有效。
SYN:发起一个新连接。
FIN:释放一个连接。
URG:紧急位
Burgent pointer
紧急指针为了打标签

3.UDP报头
在这里插入图片描述
4.IP报头
在这里插入图片描述
IP头部20~60字节,每一行是由32个bit(4个字节)构成的
Version版本 长度:4bit 0100或者0110 含义(4:表示IPV4、6:表示IPV6)
IHL(IP header length)长度:4bit 默认0101
IHL中每一个数字的单位是32bit IP报头默认大小532/8=20字节(最大:1532/8=60字节),该值限制了记录路由选项(最多记录9个)
Type of service(TOS服务类型) 长度:8bit
作用–标记流量后–可以进行QOS QOS差分服务用该字段
QOS–可以做数据过滤、数据限速—这种叫服务质量—针对一些用户,牺牲一部分用户的资源,为更重要的用户提供更优质的服务。
对流量的标记有三种方法:
1.IPP 8bit标记流量只用了前3个(只能区分8种流量),后5个bit没用
2.DSCP 区分服务代码点 标记流量用了前6个(可以区分64种流量),后2个bit用于ECN
3.PHB 前两者兼容,21种(8+12+1)
total length总长度 长度:16bit IP报头+data—整个IP数据报的长度,最长65535
identification标识符 长度:16bit
0~65535 标识不同的流量,在3层IP报文中用于区分不同的流量(如果数据是基于udp传输的,因为udp没有序列号不能进行差错控制,所以需要在IP报文中支持差错控制—要把所有分片的数据进行重组)
主机每发一个报文,加1,分片重组时会用到该字段。
flags标记位 长度:3bit
IP Flag字段格式
在这里插入图片描述
Bit 0: 保留位,必须为0。
Bit 1: DF(Don’t Fragment),能否分片位,0表示可以分片,1表示不能分片。
Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。
fragment offset片偏移 长度:13bit
片偏移:分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。
该分片距完整数据包头部的偏移值。(例如:第一个分片的分片偏移值是0.第二个是1500,第三个3000,那么每多分一个加1500字节)
单位是字节,213字节=216bit
TTL(time to live)生存时间 长度:8bit 三层防环机制(数据包的防环机制)
每查看一次路由表TTL值减一
可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。一般为255,减到0下一个路由器丢弃该数据包
如果没到达目标前TTL值为零呢----在运营商内部会走一些特殊的虚链路,VPN等技术隐藏TTL值
Protocol协议 长度:8bit 范围:0~255(0被保留)
用于描述上层协议,SAP服务接入点(层与层之间的联系)–协议号
跨层封装:ospf–89 tcp–6 udp–17
header checksum首部校验和 长度:16bit
只计算IP数据包的首部有没有被改过,不检验数据部分
肯定不校验TTL
这里不采用CRC检验码,而采用简单的计算方法。
source address源IP地址 长度:32bit
destination address目标IP地址 长度:32bit
option可选项 可变
特殊功能。
定义数据的严格路由(IP 严格路由最多定义9个IP地址–option只有40个字节(还有控制字符等需要占位所以就不足40),一个IP地址4个字节,)、松散路由、记录路由、时间戳
严格路由:—源到达目标必须按照指定的路由进行转发----走其他路是不允许的—
写严格路由的时候:源ping目标所经过所有路由器的出接口IP地址依次写入到路由控制列表中(ping包中),数据才能转发出去,数据转发出去的过程中每到一个路由器都要检测出接口IP地址,如果检测到的顺序跟列表顺序一样,则可以转发。如果中途多个路由器或少个路由器则数据包被丢弃。
松散路由:写松散路由的时候:只写中间可能会产生影响数据转发方式的路由出接口地址。
记录路由:将数据包传递过程中所经过的所有路由器的出接口IP地址全记录下来
时间戳:记录时间
padding填充项 可变 全填0
只是为了保证option+padding的大小是32bit或者是32bit的倍数
注:服务类型service type可以保证服务质量;ip报头的第二行(标志、标识、片偏移)是为了实现跨层封装;TTL生存时间0~255,默认每经过一台路由器减一,并且可以防止环路协议protocol,为了标识上层协议(协议号: TCP 6 UDP 17 OSPF 89)

四、网络发展:信号衰减–物理加压–中继器(集线器)–信号失真–交换机–广播风暴–(解决广播风暴:路由器)–路由器:划分广播域,用于连接不同的网络

1.中继器:(广播:当我的数据从设备的一个接口进去,从其他接口出去,这个形式就叫广播
解决冲突时间:产生冲突之后解决
解决冲突机制:a.FIFO先进先出 b.CSMA/CD带冲突检测的载波多路访问技术(退避算法)

2.交换机:为接入交换机的任意两个网络节点提供独享的电信号通路(有一张MAC地址表),实现单播;而MAC地址记录非常大,且有时候MAC地址里一片空白,就会被迫广播
解决冲突时间:产生冲突之前解决
解决冲突机制:a.FIFO先进先出 b.CSMA/CD带冲突检测的载波侦听技术(退避算法)

3.广播域:广播(洪泛)的范围。默认一台交换机属于一个广播域,一个广播域之下是可以相互通信的。
一个广播域可能是多个网段、一个网段就是一个广播域
冲突域:可能产生冲突的地方。

4.ARP协议:地址解析协议(基于二层封装)
AARP正向ARP,通过对端的IP地址获取对端的MAC地址
RARP:反向ARP,通过对端的MAC地址获取对端的IP地址
无故ARP(免费ARP):检测地址冲突
代理ARP:ARP欺骗(类似一个网关)

5.IP地址一个完整的IP地址需要掩码。而子网掩码区分网络位和主机位。
网络位:标记此IP地址处于哪个广播域内,网络位全部置一
主机位:可以给主机(网络终端设备)分配的地址,主机位全部置0

6.IP地址可以分为ABCDE类:点分十进制

范围及掩码
A0~127 255.0.0.0/8
B128~191 255.255.0.0/16
C192~223 255.255.255.0/24
D224~239
E240~254
单播地址:ABC类,既可以作为源地址也可以作为目标地址。包括私有地址和公有地址
私有地址:本地唯一性无需付费。A类10.0.0.0/8,B类172.16.0.0/16~172.31.0.0/16,C类192.168.0.0/24~192.168.255.0/24
公有地址:全球唯一性需要付费使用。
单播地址:D类,只可以作为目标地址
科研使用:E类

7.特殊ip地址

ip地址描述
0.0.0.0无效地址/缺省地址
255.255.255.255受限广播地址
127.0.0.1/8本地环回地址,可以用于检测网卡好坏 eg:ping 127.0.0.1
169.254.0.0/24本地私有地址(当你的电脑内没有获取你的IP地址,你的电脑会给你的电脑一个本地私有地址)
192.168.1.00000000/24代表本网段内所有主机 192.168.1.0/24,只能作为目标地址
192.168.1.11111111/24代表本网段内的广播地址 192.168.1.255/24,只能作为目标地址

7.子网划分:私有地址有限,应合理规划地址。
-【VLSM可变长子网掩码】子网划分:将一个大网络划分为一个小网络。【借用主机位来当网络位。】
举例1:192.168.2.0/24,要划分为8个子网,借用主机位3位,则 且一个网段的可用主机数量2^5-2,子网掩码为 255.255.255.224/27
192.168.2.0/27 一个网段的可用地址范围 192.168.2.1~192.168.2.30
192.168.2.32/27 一个网段的可用地址范围 192.168.2.33~192.168.2.62
192.168.2.64/27 .
192.168.2.96/27 .
192.168.2.128/27 .
192.168.2.160/27 .
192.168.2.192/27 .
192.168.2.224/27
注:借用两位作为网络位,加64,借用三位作为网络位,加32 .
-【CIDR无类域间路由】汇总:将一个小网络划分为一个大网络。【母网号一致,取相同位,去除不同位。】
举例2:192.168.1.0/24 , 192.168.2.0/24, 192.168.3.0/24 进行汇总。
答案为:192.168.0.0/22
注: 这三个前22位相同,那么取相同的,其他的置为0,则汇总后为192.168.0.0/22 22<24超网(超网:汇总后的子网掩码长度小于主类网子网掩码的长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着蜗牛追汤圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值