计算机网络-TCP/IP| 青训营笔记

237 阅读9分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。

参考链接:www.cnblogs.com/wj-1314/p/7…

TCP/IP网络模型和OSI七层网络模型

image.png

数据链路层

网络物理链路中,从一个节点向另一个节点传送的是比特流。但是单纯的电信号01没有任何意义,必须规定电信号多少位一组,每组什么意思。

  • 作用: 对电信号进行了封装,定义了分组方式。

数据链路层是为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧

数据帧中包含物理地址(又称MAC地址)、控制码、数据及校验码等信息。该层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路转换成对网络层来说无差错的数据链路

此外,数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻塞。

以太网协议

早期的时候各个公司都有自己的分组方式,后来形成了同意的标准,即以太网协议ethernet

ethernet规定:一组电信号构成一个数据包,叫做帧。每一数据帧分成报头head和数据data两部分。

head(固定18字节):

  • 发送者/源地址(mac地址),6个字节
  • 接收者/目标地址(mac地址),6个字节
  • 数据类型,6个字节

data(最短46字节,最长1500字节):

  • 数据包的具体内容

head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

mac地址

head中包括的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址

  mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

广播

有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)

  ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼。

image.png

网络层

网络层由来:有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难。

网络层是为传输层提供服务的,传送的协议数据单元称为数据包或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过路径选择算法(路由)将数据包送到目的地。

image.png

上图结论:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关

网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址(IP地址)。

IP地址

ip地址是唯一标识网络上的计算机,ip是由一个32位的0,1字符串组成。网络中的每个路由或者主机都会拥有一个独一无二的ip地址。用于区分用户。

根据tcp/ip协议,连接在internet上的每个设备都必须有一个ip地址,他是一个32位二进制数,也可以用点分十进制表示,每八位一组,用一个十进制表示即0~255,每组用"."分隔开,例如172.16.45.10。

IP地址组成及分类

image.png

32比特的ip地址被分为两个部分:网络号和主机号。

IP地址分类: IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。

  • A类IP地址:一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。
  • B类IP地址 :一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
  • C类IP地址:一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
  • D类地址用于多点广播(Multicast): D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
  • E类IP地址 以“llll0”开始,为将来使用保留。

子网掩码

子网掩码是一个32位的2进制数,其对应网络地址的所有位置都为1,对应于主机地址的所有位置都为0。子网掩码是用来标识一个IP地址的那些位是代表网络位,以及那些位代表主机位。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分为网络地址和主机地址两部分。

由此可知,A类网络的默认子网掩码是255.0.0.0,B类网络的默认子网掩码是255.255.0.0,C类网络的默认子网掩码是255.255.255.0。将子网掩码和IP地址按位进行逻辑“与”运算,得到IP地址的网络地址,剩下的部分就是主机地址,从而区分出任意IP地址中的网络地址和主机地址。

子网掩码常用点分十进制表示。

image.png

子网掩码作用:区分网络位和主机位是为了划分子网(网络向网络位借位,即子网掩码可以是255.255.255.192,也就是1111111.11111111.11111111.11000000,这里就实现了子网的划分),就是把一个大网络分成多个小网络,为什么要分子网呢?

  • 广播风暴:6万台主机在一个网段里,通信基本靠吼,任何一个人要吼一嗓子,6万多个人必须被动听着,一会你的网络就瘫痪啦。

  • 地址浪费:运营商在公网上有很多级联的路由器,有时候2个路由器之间只会用掉几个IP,如果不进行子网划分,那同网段的其它主机也就都不能用了。

IP协议头

image.png

TTL字段规定该数据包在穿过多少个路由之后才会被抛弃(这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64。

ICMP

IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。

  当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会.

  我们一般主要用ICMP协议检测网络是否通畅,基于ICMP协议的工具主要有ping 和traceroute

传输层

传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,迅雷等多个应用程序,

那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序呢?答案就是端口,端口即应用程序与网卡关联的编号。

传输层功能:建立端口到端口的通信。端口范围0-65535,0-1023为系统占用端口

TCP

可靠传输(最可靠的方式就是只要不得到确认,就重新发送数据报,直到得到对方的确认为止),TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

image.png

UDP

不可靠传输,“报头”部分一共只有8个字节,总长度不超过65,535(64K)字节,正好放进一个IP数据包。