网络基础知识

引入

在这里插入图片描述

五层模型

1.概述

  • 每一层都有自己的功能
  • 每一层都靠下一层支持
  • 越下面的层,越靠近硬件
  • 越上面的层,越靠近用户

2.图解

在这里插入图片描述

3.层与协议

  • 为了完成功能,每层都遵守共同的规则,该规则叫协议(protocol)
  • 协议总称互联网协议(Internet Protocol
    Suite)

实体层

  • 实体层:将电脑连接起来的物理手段
  • 可以用光缆、电缆、双绞线、无线电波等方式
  • 主要规定网络的电气特性
  • 负责传送0和1的电信号在这里插入图片描述

链接层

1.概述

  • 链接层:确定0和1电信号的分组方式

2.以太网数据包

  • 以太网协议规定
一个数据包 = 一组电信号 =(Frame)
一帧 = 标头(Head) + 数据(Data)

在这里插入图片描述

  • 标头
包含以太网数据包的说明项,比如发送者、接受者、数据类型等等
长度:固定为18字节
  • 数据
以太网数据包的具体内容
长度:最短为46字节,最长为1500字节
  • 帧最短为64字节,最长为1518字节
  • 如果数据过长就必须分成多个帧进行发送
  • 以太网数据包必须知道接收方的MAC地址才能发送

3.MAC地址

MAC地址 = 网卡地址 = 数据包的发送地址 + 接收地址

4.网卡

  • 以太网协议规定
连入网络的所有设备都必须有"网卡"接口
数据包只能在网卡间传输
  • 每块网卡出厂的时都有全世界独一无二的MAC地址
    在这里插入图片描述
  • 长度是48个二进制位,常用12个十六进制数表示
6个十六进制数是厂商编号
后6个十六进制数是该厂商的网卡流水号

在这里插入图片描述

5.广播

  • 知道接收方MAC地址,系统怎样才能把数据包准确送到接收方?
以太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断是否为接收方

下图中,1号计算机向2号计算机发送数据包,同一子网络的3号、4号、5号计算机都会收到这个包,每台计算机读取该包的"标头"中接收方的MAC地址,与自身MAC地址相比较,若两者相同接受这个包,做进一步处理,否则就丢弃这个包

在这里插入图片描述

  • 广播(broadcasting):本网络中所有计算机都接收该数据包,每个计算机读取数据包标题中接收方的MAC地址,与自己的MAC地址比较,若相同接收该包,做进一步处理,否则丢弃
  • 广播风暴:信息量大就会阻塞

6.数据包+MAC地址+广播使链路层可以在多台计算机之间传送数据

网络层

1.由来

  • 以太网采用广播发送数据包,不仅效率低,而且局限在发送者所在的子网络,如果两台计算机不在同一个子网络数据包无法传递
  • 互联网是无数子网络共同组成的一个巨型网络
    在这里插入图片描述
  • 因此要区分哪些MAC地址在同一子网络,哪些不在
  • 如果是同一个子网络采用广播方式发送,否则采用"路由"方式发送
    在这里插入图片描述
14发送数据包,先判断与4是否在同一个子网络(IP地址+子网掩码),结果发现不是,于是就把这个数据包发到网关A。网关A通过路由协议,发现4位于子网络B,又把数据包发给网关B,网关B再转发到4
  • 遗憾的是,MAC地址本身无法辨别是否在同一网络
  • 此时网络层就诞生

2.概述

  • 网络层:区分不同的计算机是否属于同一子网络

3.网络地址(网址)

  • 网络层引入的一套新地址
  • 每台计算机有了两种地址:MAC地址+网络地址
  • MAC地址与网络地址没有任何联系,随机组合在一起
MAC地址绑定在网卡上,确定数据包的发送地址与接收地址
网络地址由管理员分配,确定计算机所在的子网络
  • 必定是先处理网络地址,然后再处理MAC地址

4.IP协议

  • 规定网络地址的协议
  • 广泛采用的IPv4协议规定,网络地址由32个二进制位组成,常用4个十进制数表示IP地址,范围0.0.0.0~255.255.255.255
    在这里插入图片描述

5.IP地址

  • 互联网上的每一台计算机都会分配到IP地址
  • 前部分表示网络,后部分表示主机
比如IP地址172.16.254.1,假定网络部分是前24(172.16.254),则主机部分是后8(1)
  • 处于同一子网络的计算机IP地址网络部分相同

6.子网掩码

  • 确定网络部分由前几位表示
  • 由32个二进制位组成,形同IP地址
  • 网络部分用1表示,主机部分用0表示
比如IP地址172.16.254.1,且已知网络部分是前24位,主机部分是后8位,则子网掩码是11111111.11111111.11111111.00000000,十进制表示255.255.255.0

7.判断两台计算机是否在同一子网络

  • IP地址+子网掩码
  • 方法
两个IP地址分别与子网掩码进行与(AND 有00)运算,比较运算结果,相同则在同一子网络,否则就不是

比如已知IP地址172.16.254.1172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?
	两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络

8.IP数据包

  • IP数据包:根据IP协议发送的数据(必定包含IP地址)
  • 以太网数据包只包含MAC地址,将IP数据包放入数据部分,不用修改以太网规格
  • 互联网分层结构的好处:上层的变动完全不涉及下层的结构
  • 结构:标头+数据
    在这里插入图片描述
    在这里插入图片描述
  • 标头
包含版本、长度、IP地址等信息
长度:20~60字节
  • 数据
IP数据包的具体内容
长度:最大65515字节
  • 整个IP数据包总长度最大为65,535字节
  • 以太网数据包数据部分最长为1500字节,IP数据包存于以太网数据包数据部分,所以IP数据包超过1500字节就需要分割成几个以太网数据包分开发送

9.ARP协议

  • 发送数据时需同时知道接收方的MAC地址与IP地址
  • 通常IP地址是已知的,但是不知道MAC地址
  • 两种情况
1.两台主机不在同一子网络
	实际没办法得到对方的MAC地址,只能将数据包传给连接两个子网络的网关处理
2.两台主机在同一子网络
	用ARP协议得到对方的MAC地址
  • ARP协议:得到接收方的MAC地址
取以太网数据包中的一个数据包,该数据包MAC地址栏填写FF:FF:FF:FF:FF:FF,表示这是广播地址
将该数据包发送到子网络的每一台主机,主机从中取出IP地址与自己的IP地址比较,若相同则向对方报告自己的MAC地址,否则丢弃

传输层

1.端口

  • MAC地址和IP地址在互联网任意两台主机上建立通信
  • 同一台主机上有许多程序都需要用到网络,当数据包从互联网发来时如何知道表示的是哪个程序?
  • 端口(port):标识数据包供哪个程序(进程)使用,实际是使用该网卡程序的编号
  • 0~65535中的整数,由16个二进制位组成
0~1023被系统占用,用户只能选大于1023的端口

2.传输层

  • 建立端口与端口间的联系
相比之下,网络层的功能是建立主机与主机间的通信
  • 确定主机与端口号,可以实现程序之间的交流
  • 套接字 = 主机 + 端口

3.UDP协议

  • 在数据包中加入端口信息的最简单协议
  • 格式几乎就是在数据前面加上端口号
  • 将UDP数据包放入IP数据包的数据部分
  • UDP数据包结构:标头+数据
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 标头
定义发出端口和接收端口
长度:8字节
  • 数据
UDP数据包的具体内容
  • UDP数据包总长度不超过65,535字节,正好放进一个IP数据包
  • 优点:简单,容易实现
  • 缺点:数据包一旦发出,无法知道接收方是否接收

4.TCP协议

  • TCP协议提高网络可靠性,确保数据不会遗失,但过程复杂、实现困难、消耗较多资源
  • 每发出一个数据包都要求确认,如果数据包遗失就收不到确认信息,发出方有必要重发该数据包
  • TCP数据包内嵌在IP数据包的数据部分
  • TCP数据包没有长度限制,理论上可以无限长,但通常TCP数据包的长度不超过IP数据包的长度,以确保单个TCP数据包不必再分割,保证网络的效率
  • TCP协议栈
    在这里插入图片描述

5.TCP传输过程

  • 原理图
    在这里插入图片描述
  • 建立连接的三次握手分析
1.客户端发出段1:SYN位表示连接请求,序号1000在网络通讯中用作临时地址,每发一个数据字节序号加1(接收端可以根据序号排出数据包的正确顺序,也可以发现丢包的情况),另外规定SYN位和FIN位也要占一个序号,这次虽然没发数据,但是发了SYN位,因此下次再发送应该用序号1001。mss表示最大段尺寸,如果一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP 层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度
2.服务器发出段2:带有SYN位,同时置ACK位表示确认,确认序号是1001,表示“我接收到序号1000 及其以前所有的段,请你下次发送序号为1001的段”,也就是应答了客户端的连接请求,同时也给客户端发出一个连接请求,同时声明最大尺寸为1024
3.客户端发出段3:对服务器的连接请求进行应答,确认序号是8001

客户端和服务器分别给对方发连接请求,同时应答对方的连接请求,其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为三方握手(three-way-handshake)
在建立连接的同时,双方协商了一些信息,例如双方发送序号的初始值、最大段尺寸等
  • 数据传输过程分析
1.客户端发出段4:从序号1001开始的20个字节数据
2.服务器发出段5:确认序号为1021,对序号为1001-1020的数据表示确认收到,同时请求发送序号1021开始的数据,服务器在应答的同时也向客户端发送从序号8001开始的10个字节数据
3.客户端发出段6:对服务器发来的序号为8001-8010的数据表示确认收到,请求发送序号8011开始的数据

应用程序交给TCP协议发送的数据会暂存在TCP层的发送缓冲区中,发出数据包给对方之后,只有收到对方应答的ACK段才知道该数据包确实发到了对方,可以从发送缓冲区中释放掉了,如果因为网络故障丢失了数据包或者丢失了对方发回的ACK段,经过等待超时后TCP协议自动将发送缓冲区中的数据包重发
  • 关闭连接的四次挥手
1.客户端发出段7:FIN位表示关闭连接的请求
2.服务器发出段8:应答客户端的关闭连接请求
3.服务器发出段9:包含FIN位,向客户端发送关闭连接请求
4.客户端发出段10:应答服务器的关闭连接请求

服务器的应答和关闭连接请求通常不合并在一个段中,因为有连接半关闭的情况,这种情况下客户端关闭连接之后就不能再发送数据给服务器了,但是服务器还可以发送数据给客户端,直到服务器也关闭连接为止

应用层

  • 应用程序接收传输层的数据
  • 应用层规定应用程序的数据格式
  • 数据放在TCP数据包的数据部分
    在这里插入图片描述

小结

1.数据包结构

在这里插入图片描述

2.数据包目标地址

  • 发送包必须知道目标地址+IP地址
    在这里插入图片描述

用户的上网设置

1.静态IP地址

  • 新电脑需设置四个参数才能上网,缺一不可
本机的IP地址
子网掩码
网关的IP地址
DNS的IP地址
  • 四个参数是给定的,每次开机都不会变
  • 缺点:不灵活

2.动态IP地址

  • 每次开机会自动分配到一个IP地址,不用人为设定
  • 使用的协议叫做DHCP协议

3.DHCP协议

  • 应用层协议,建立在UDP协议之上
  • DHCP数据包
    在这里插入图片描述
  • DHCP服务器
每个子网络中有台计算机负责管理本网络的所有IP地址
  • 新计算机加入该子网络,必须向DHCP服务器发送DHCP请求数据包,申请IP地址和相关网络参数
  • 新加入的计算机不知道MAC地址与IP地址如何发送DHCP数据包?
  • DHCP请求数据包
1.以太网标头:设置发出方(本机)与接收方(DHCP服务器)MAC地址
	发出方:本机网卡MAC地址
	接收方:FF-FF-FF-FF-FF-FF(不知道)
2.IP标头:设置发出方(本机)与接收方(DHCP服务器)IP地址
	发出方:0.0.0.0(不知道)
	接收方:255.255.255.255(不知道)
3.UDP标头:设置发出方(本机)与接收方(DHCP服务器)端口
	发出方:68端口(规定)
	接收方:67端口(规定)
  • 以上数据包构造完毕,可以发出
  • 广播发送,同一个子网络每台计算机都收到该包
  • 接收方MAC地址不知道,则根据ARP协议通过IP地址确定
  • 接收方IP地址是255.255.255.255,发送方IP地址是0.0.0.0
  • 此时确定该包是发给DHCP服务器的,其他计算机可以丢弃该包
  • 接下来
  • DHCP服务器读该包的数据内容,分配IP地址,发送DHCP响应数据包(结构类似)
  • DHCP响应数据包
1.以太网标头:设置发出方(DHCP服务器)与接收方(本机)MAC地址
	发出方:网卡MAC地址
	接收方:网卡MAC地址
2.IP标头:设置发出方(DHCP服务器)与接收方(本机)IP地址
	发出方:DHCP服务器的IP地址
	接收方:255.255.255.255
3.UDP标头:设置发出方(本机)与接收方(DHCP服务器)端口
	发出方:67端口(规定)
	接收方:68端口(规定)
  • 申请IP地址和相关网络参数包含在Data部分
  • 新加入的计算机收到DHCP响应包,就知道自己的IP地址、子网掩码、网关地址、DNS服务器等等参数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值