【计算机网络】网络层和数据链路层

文章目录

IP协议

TCP有将数据 可靠、高效 发给对方的 策略 ,而IP具有发送的能力,即将数据从A主机送到B主机的 能力

用户要的是100%的概率送到!

IP地址 = 目标网络 + 目标主机

IP协议报头

4位首部长度:同TCP(基本单位是4字节)

8位协议:表征有效载荷是什么报文(向哪个协议交付)

8位服务类型:不同种类的传送策略 (最小延迟,最大吞吐量,最高可靠性,最小成本),四种是互斥的,只能选择一个

16位总长度(字节数):报头和有效载荷的有效分离。

8位生存时间:该报文在转发过程中,最多经历的路由器的次数

源IP和目的IP,而在TCP报文里则有源端口和目的端口,这样即标识了两个进程。

网段划分

挨个查找------一次只能排除一个人,如果能一次排除其他大部分人,查找效率才能大大提高,因此我们必须进行子网划分

国内的网络是被国内运营商顶层涉及的,而国际的网络则是各个国际商量设计。

分类划分法

A类网络第一位是0,其他网络是1

B类网络第一位是1,第二位是0,其他网络是1

依次类推...

CIDR 方案

引入子网掩码来区分网络号和主机号。使用这样的方式能更大程度的利用IP地址。

路由

通过查询路由表,决定路径选择。

NAT网络地址转换技术

NAT技术可以分为去和回两个过程。

去:不断替换IP报文中源IP地址,直到到了目标网络的入口路由器,再通过ARP协议通过IP地址获得硬件地址,实现局域网内的数据发送。

回:

回的时候依靠一张转换表,路由器会维护这样一张转换表,当服务器要给客户端发送消息时,会按照这个表的转换关系来替换。由于NAT技术的存在,公网无法直接访问内网(没有映射关系)。

NAT转化表:

完整转化过程:

IP报文的另外三个参数

16位标识:通过十六位标识来区分ip报文

3位标志:

第一位保留,

第二位置为1表示禁止分片,为0表示允许分片;

第三位表示更多分片,1表示还有报文,0表示没有报文了

13位片偏移:

1、由于IP报文携带了源IP地址,因此IP层具有区分不同客户端的能力

2、如何知道是否分片

  • 只要片偏移不是0,提取16位标识,这个标识一定分片了
  • 如果片偏移是0,看更多分片,为1则分片了,为0则没有分片了

开始报文:片偏移为0 且 更多分片为1

中间报文:偏移量>0 且 更多分片为1

结尾报文:片偏移不为0 且 更多分片为0

独立报文:片偏移为 0 且 更多分片为0

3、如何保证分片收全

头尾丢失我们知道

自身偏移 + 自身大小 = 下一分片的偏移量

4、怎么组装在一起

按照升序遍历,同问题3

5、如何保证组合在一起的报文是对的

16位校验和。

网络中,分片应尽量成为少数情况,应尽量减少这样的情况,如果其中有一片丢失,TCP收不到应答,就会一整个重新发送。也就是说过多的分片,容易增加丢包率

所以,TCP在发送数据时,也会尽量规避发送过大的报文!这也就是为什么发送缓冲区不直接发一大坨数据过去,而是有一个滑动窗口存在。

MSS(最大段尺寸):1500-20-20 = 1460;

mac帧

路由是让我们找到正确的路径,比如为什么要从路由F到路由G,那F怎么到G的,就是数据链路层考虑的问题了,即要解决从一个子网内,如何发送数据的问题。

之前我们提到了,IP层提供了将数据从A主机跨网络送到B主机的能力,其实这个能力是由mac帧和IP层共同实现的。

一张网卡有一个mac地址,这个地址全球唯一。

局域网通信原理:

网卡中,可以设置为混杂模式,不对报文的目标MAC地址进行认证,直接向自己上层交付

在以太局域网中,任何时刻,只能由一台主机给另一台主机发送数据帧,否则的可能会发生数据碰撞的问题,会进行碰撞检测,和碰撞避免。这里的数据也是临界资源。令牌环网本质是锁和临界资源的关系。

黑掉局域网:向局域网不断发送垃圾数据,让 其不断碰撞。

重传在数据链路层也存在。

mac帧报文:

目的地址为全F的时候,为广播所有的局域网主机。

ARP协议

ARP协议工作在链路层,ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.

  • 源mac地址、目的mac地址在以太网首部和ARP请求中各出现一次,对于链路层是以太网的情况来说是多余的,其他类型网络可能是必须的
  • 硬件类型指链路层网络类型,1为以太网
  • 协议类型指要转换的地址类型,0x0800为IP地址
  • 硬件地址长度对以太网为6字节
  • 协议地址长度对于ip地址为4字节
  • op字段为1表示ARP请求,op为2表示ARP应答

任何主机收到ARP都会优先看op,

交换机

ICMP

ICMP隶属于网络层,他与ip的关系类似于arp和mac的关系,ICMP协议是用来验证网络是否畅通的;IP不保证可靠性,但ICMP提供了这个功能。

ping命令使用哪个端口号?ping命令基于ICMP,不存在端口号的概念

代理服务器

正向代理:

反向代理:

相关推荐
FeelTouch Labs19 分钟前
Netty实现WebSocket Server是否开启压缩深度分析
网络·websocket·网络协议
长弓三石2 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
残月只会敲键盘2 小时前
php代码审计--常见函数整理
开发语言·php
xianwu5432 小时前
反向代理模块
linux·开发语言·网络·git
follycat3 小时前
[极客大挑战 2019]HTTP 1
网络·网络协议·http·网络安全
ac-er88883 小时前
MySQL如何实现PHP输入安全
mysql·安全·php
xiaoxiongip6663 小时前
HTTP 和 HTTPS
网络·爬虫·网络协议·tcp/ip·http·https·ip
JaneJiazhao4 小时前
HTTPSOK:智能SSL证书管理的新选择
网络·网络协议·ssl
CXDNW4 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
无所谓จุ๊บ4 小时前
树莓派开发相关知识十 -小试服务器
服务器·网络·树莓派