内容正文:
CCF-GESP C++二级
CCF-GESP C++二级
编程能力等级认证
计算机网络2
第四课
计算机网络2
2
IP地址
01
01
3
IP 地址
学计算机网络呢!
在干嘛?
如何实现两台电脑直接通信呢?
知识讲解
如果我们想要给别人打电话,我们要知道对方的手机号才能拨打电话,我们的手机中都有一个电话卡,电话卡有一个号码,别人拨打这个电话号码,就可以跟我们建立联系。
两台计算机如何直接通信呢?每个计算机也有一个一个通信卡,叫做网卡,每个网卡会被分配一个IP地址,通过IP地址就可以实现电脑间的相互通信了。
4
IP 地址
网络中有多台计算机,需要通过IP地址来区分每一台机器。
常见的IP为IPv4地址(第4版IP协议规定的地址)
222.1.1.1
222.1.1.2
222.1.1.3
222.1.1.4
222.1.1.5
222.1.1.6
222.1.1.7
知识讲解
网络中有多台计算机,需要通过IP地址来区分每一台机器。IP地址就像是我们的网购的收货地址,如果你要网购某样东西寄给朋友,那么你就要知道对方的收货地址,这样快递员才能把东西送到朋友手里。现在我们常用的IP为IPv4地址,也就是第4版IP协议规定的地址。
5
IP地址(IPv4)
10000000000010110000001100011111
计算机中存储:
提高可读性写法:
10000000 00001011 00000011 00011111
4个8位二进制数转十进制数:
128 11 3 31
采用点分十进制表示法:
128.11.3.31
IPv4 地址是一个由 32 位二进制数组成的标识符。
通常采用点分十进制表示法:
8个二进制数为一组,将其转换为十进制数(0 ~255),再用点隔开。
知识讲解
IPv4 地址是一个由 32 位二进制数字组成的标识符。通常用四个十进制数(每个数取值范围为 0 到 255)来表示。
在计算机中IP地址的存储形式就是32为二进制数字,但是为了提高可读性,大家一般会将每8个二进制位之间添加一个空格。
通常会将8个二进制位转为一个十进制数,一共会换成四个十进制数。
我们会使用点将四个十进制数分隔来表示一个IP地址。这种表示方式称为点分十进制表示法。
6
判断题
(2023年3月)IPv4 的地址通常用"点分十进制"的表示形式,形如(a.b.c.d),其中 a、b、c、d 都是 1~255 之间的十进制整数。
正确 错误
真题解析
解析:IP地址中,每个十进制数的范围都是0~255
7
选择题
按照TCP/IP协议,接入互联网的每一台主机都有一个唯一的地址标识,这个地址标识是( )。
主机地址
网络地址
IP地址
端口地址
C
课堂练习
2019 csp-J
解析:IP地址是互联网中每台主机的唯一标识
8
选择题
IPv4地址由( )个二进制位组成。
16
32
48
8
B
课堂练习
解析:IPv4地址是由32个二进制位组成的。
9
选择题
下列几个32位IP地址中,书写错误的是( )。
A. 162.105.135.27
B. 192.168.0.1
C. 256.256.129.1
D. 10.0.0.1
C
课堂练习
2014年CSP-J
解析:32位IP地址通常用四个十进制数表示,每个十进制数的范围是0~255,所以C选项是错误的
10
IP地址的组成
172 . 16 . 254 . 1
每个IP地址由网络号(网络地址)和主机号(主机地址)两部分组成:
网络号
主机号
知识讲解
每个IP地址由网络号(网络地址)和主机号(主机地址)两部分组成。
例如:172 . 16 . 254 . 1。这个IP地址中,172和16就是网络号,254和1就是主机号。
通过网络号码字段判断出主机属于哪个网络。如果两个IP地址网络号相同,则证明两台计算机是处于同一个网络中。
11
IP地址被划分为五大类(A类,B类,C类,D类,E类)
IP地址的分类
A类地址
B类地址
C类地址
D类地址
E类地址
32位
网络号
0
网络号
1 0
网络号
1 1 0
主机号
主机号
主机号
1 1 1 0
多播地址
1 1 1 1
保留为今后使用
8位
24位
16位
16位
24位
8位
28位
常用
知识讲解
国际标准组织ISO定义地址分类:五大类。A类,B类,C类,D类和E类。其中A、B、C是常用的地址分类。
A类当中网络号占8位,其中第一个二进制数位必须是0。主机号站24位。
B类当中网络号占16位,其中前两个二进制数位必须是10。主机号是16位。
C类当中网络号占24位,其中前三个二进制数位必须是110。主机号是8位。
D类地址属于组播IP地址。
E类地址专门用于特殊的实验目的。
12
选择题
以下关于IP地址的说法正确的是( )。
IP地址由两部分组成:网络号、主机号。
A类IP地址的网络号有16位。
IP地址通常表示为点分二进制形式。
IP地址可以固化在硬件中,是独一无二的。
A
课堂练习
解析:选项B中A类IP地址的网络号有8位,选项C中IP地址的常用表示方式是点分十进制形式。选项D,MAC地址才是固化在硬件中,独一无二的。因此只有选项A是正确的。
13
IP地址(IPv6)
IPv6 地址是一个由 128 位二进制数组成的标识符。
通常采用冒号十六进制表示法:
16个二进制数为一组,共八组,将其转换为十六进制数,再用冒号隔开。
冒号十六进制记法:
DBEF:EE2A:0000:EF01:2345:1180:000A:FFFF
简化:
DBEF:EE2A:0:EF01:2345:1180:000A:FFFF
知识讲解
随着网络的飞速发展,IPv4的资源已经枯竭,为了应对这种情况,第6版IP协议中,规定了IPv6地址。IPv6 地址是一个由 128 位二进制数字组成的标识符。通常用十六个二进制数为一组,共八组,将其转换为十六进制数,再用冒号隔开。
例如:DBEF:EE2A:0000:EF01:2345:1180:000A:FFFF就是一个冒号十六进制记法的IPv6地址。但是冒号分隔十六进制数的方式记录的IP地址较长,因此一般都会做进一步的简化,其中0000运行把前面的0省略。例如把0000中的前三个0省略,写成1个0。
14
选择题
IPv6占多少个二进制位?( )
A. 32
B. 64
C. 128
D. 256
C
课堂练习
解析:IPv6地址占128个二进制位,IPv4地址占32个二进制位。
15
域名
02
02
16
域名
IP地址是一长串数字,不方便用户记忆。
于是计算机网络引入了另一套字符型的IP地址,即域名地址。
14.215.177.39
百度首页IP地址
www.baidu.com
百度首页域名地址
知识讲解
IP 地址,它给互联网上的每台计算机和其它设备都规定了一个唯一的地址。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。
但是 IP 地址毕竟是一串毫无规律的数字,并不方便人类的记忆和书写。因此在 IP 地址的基础上又发展出一种符号化的地址方案,来代替数字型的 IP 地址,每一个符号化的地址都与特定的IP地址对应。这个与网络上的数字型 IP 地址相对应的字符型地址,就是域名 。
例如:百度首页的IP地址位14.215.177.39,它对应的域名是www.baidu.com。我们一般记忆的肯定也是www.baidu.com。
17
域名的组成
一个完整的域名由二个或二个以上部分组成, 各部分之间用英文的句号"."来分隔。
www.baidu.com
顶级域名
机构名
服务器名
www.moe.gov.cn
机构类型
机构名
服务器名
顶级域名
知识讲解
一个域名是由几部分(有可能只是一部分,也许是两部分,三部分...)组成的简单结构,它被点分隔。不同于中文书写顺序,它需要从右到左阅读。域名中越靠右的部分层次越高。
例如:www.baidu.com 从右到左分别是顶级域名,机构名,服务器名
www.moe.gov.cn 从右到左分别是顶级域名,机构类型,结构名,服务器名。
18
常见的顶级域名
.com 用于商业机构
.net 用于网络服务
.org 用于非盈利组织
.edu 用于教育机构
国际通用的顶级域名:
国家/地区顶级域名:
.cn 中国的国别域名
.us 美国的国别域名
.jp 日本的国别域名
知识讲解
其中有一些常见的顶级域名:
国际通用的顶级域名:
.com 用于商业机构
.net 用于网络服务
.org 用于非盈利组织
.edu 用于教育机构
国家/地区顶级域名:
.cn 中国的国别域名
.us 美国的国别域名
.jp 日本的国别域名
19
判断题
(2023年6月)域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称, CCF 编程能力等级认证官方网站的域名是 gesp.ccf.org.cn,其中顶级域名是 gesp。
正确 错误
真题解析
解析:本题考察计算机网络中的域名概念;顶级域名是指域名最右边的那个词, gesp.ccf.org.cn 的顶级域名是.cn。所以本题错误。
20
选择题
中国的国家顶级域名是( )。
.cn
.ch
.chn
.China
A
课堂练习
2013年CSP-J
解析:中国的国家顶级域名应该是.cn
21
合法的IP地址
【问题描述】
因特网中的每台主机都被分配了一个在全球范围内唯一的地址,即IP地址。请输入使用“点分十进制表示法”的IP地址,判断输入的IP地址是否合法。
【输入描述】
一行,“点分十进制表示法”的IP地址,数字与点之间使用一个空格分隔。
【输出描述】
如果IP地址合法则输出“YES”,不合法则输出“NO”。
【输入样例1】
192 . 168 . 0 . 1
【输出样例1】
YES
【输入样例2】
255 . 243 . 256 . 0
【输出样例2】
NO
课堂练习
22
思路分析
合法的IP地址:每个十进制数的范围是0~255
输入:255 . 243 . 256 . 0
输入:192 . 168 . 0 . 1
√
√
√
√
√
√
×
√
合法
不合法
解题关键:判断四个十进制数是否都在0~255之间
课堂练习
首先要明确:什么是合法的IP地址,合法的IP地址应该是每个十进制数的范围是0~255
所以需要判断四个十进制数是否都在0~255之间。
以样例输入为例:
第一组输入数据,需要判断四个十进制数是否都在0~255之间,如果都在,那么这个IP地址就是合法的IP地址
第二组输入数据,也是判断四个十进制数是否都在0~255之间,只要有其中一个不符合条件,那么这个IP地址就是不合法的。
23
192 . 168 . 0 . 1
思路分析
1、输入“点分十进制法”表示的IP地址。
数字
字符
int a,c,e,g;
char b,d,f;
cin>>a>>b>>c>>d>>e>>f>>g;
2、判断四个数字是否全部在0~255之间。
if((a>=0&&a<=255)&&(c>=0&&c<=255)&&(e>=0&&e<=255)&&(g>=0&&g<=255))
cout<<"YES";
else
cout<<"NO";
课堂练习
解决这个题目的时候,首先要输入以点分十进制法表示的IP地址,需要注意IP地址中,其中有4个数字,另外还有3个字符。
所以要创建四个int类型的变量和三个char类型的变量,分别接收输入的内容。
之后再判断这四个数字是否全部都在0~255之间,判断变量a是否在0~255之间需要表示成a>=0&&a<=255
其余变量也要这样判断,四个条件需要同时成立,因此要使用逻辑与&&运算符链接四个条件。
当四个数字同时满足条件,才输出YES。否则输出NO。
24
【完整代码】
#include <iostream>
using namespace std;
int main(){
int a,c,e,g;
char b,d,f;
cin>>a>>b>>c>>d>>e>>f>>g;
if((a>=0&&a<=255)&&(c>=0&&c<=255)&&(e>=0&&e<=255)&&(g>=0&&g<=255))
cout<<"YES";
else
cout<<"NO";
return 0;
}
课堂练习
完整代码
25
#include <iostream>
using namespace std;
int main(){ // 主函数,程序的入口
int a,c,e,g; // 定义四个整型变量a、c、e、g,用于存储输入的整数部分
char b,d,f; // 定义三个字符型变量b、d、f,用于存储输入的字符部分
cin>>a>>b>>c>>d>>e>>f>>g;
// 从标准输入读取7个值,分别赋给a、b、c、d、e、f、g
// 判断a、c、e、g这四个整数是否都在0到255的范围内(包括0和255)
if((a>=0&&a<=255)&&(c>=0&&c<=255)&&(e>=0&&e<=255)&&(g>=0&&g<=255))
cout<<"YES"; // 如果都在范围内,输出"YES"
else
cout<<"NO"; // 如果有任意一个不在范围内,输出"NO"
return 0;
感谢你的学习
27
$$