计算机网络概述

发布时间 2023-09-16 10:00:33作者: 常羲和

计算机网络概述

1. 计算机网络发展简史

1.1 最早的广域网

在通信双方或多方之间,通过电路交换建立电路连接的网络

image-20230915192658512

1.2电路交换网特点

1.建立链接->使用链接->释放链接

2.物理通路被通信双方独占

计算机数据是突发式出现在数据链路上的,而电路交换网的建立链接、释放链接的三个过程使得传输效率太低,故电路交换不适合传输计算机数据

1.3 计算机网络的要求

1、不是为了打电话

2、结构简单,可靠的传输数据

3、能够连接不同种类的计算机

4、所有网络节点同等重要

5、必须有冗余的路由

1.4 分组交换【重点】

通过标有地址的分组进行路由选择传送数据,使通信通道仅在传送期间被占用的一种交换方式。

image-20230915193158792

分组的组成:每个分组都由首部和数据段组成;

首部:地址信息和校验信息

将数据分成首部和数据段的结构有几个好处:

1.灵活性:通过将控制信息与实际数据分开,可以根据需要独立地处理和传输它们。这样,网络协议可以根据需要进行扩展或修改,而不会影响数据的传输和处理

2.效率:控制信息通常比实际数据量小得多,通过将控制信息放在首部中,可以减少每个数据包的总体大小,从而提高网络传输的效率

3.可靠性:首部中的控制信息可以用于检测和纠正传输中的错误。

1.5 交换方式

交换方式—存储转发

节点收到分组,先暂时存储下来,再检查其首部,按照首部中的目的地址,找到合适的节点转发出去

特点:

1.以分组作为传输单位

2.独立的选择转发路由

3.逐段占用,动态分配传输带宽

目的主机收到的报文是无序,重组发生在目的主机上

2. TCP/IP协议

为了使各种不同的计算机之间可以互联ARPANet指定了一套计算机通信协议,即TCP/IP协议(族).

为了减少协议设计的复杂性,大多数网络模型均采用分层的方式来组织

每一层利用下一层提供的服务来为上一层提供服务

本层服务的实现细节对上层屏蔽

2.1 分层结构

七层分层结构:从下向上(第一层:物理层,第七层:应用层)

四层结构:从下向上(第一层:链路层,第四层:应用层)

image-20230915194455367

应用层:应用程序间沟通的层

例如:FTP、Telnet、HTTP、SMTP、POP3等

传输层:提供进程间的数据传送服务

负责传送数据,提供应用程序端到端的逻辑通信

例如:TCP、UDP

网络层:提供基本的数据封包传送功能

最大可能的让每个数据包都能够到达目的主机

例如:IP、ICMP等

链路层:负责数据帧的发送和接收

每层完成自己的任务,最终通过不同层次的处理完成数据的收发

FTP:文件传输协议      Telent:远程连接服务 
TFTP:简单文件传输协议  NFS:网络文件系统 
TCP:传输控制协议      UDP:用户数据报协议 
ICMP:网络控制报文协议  IP:网络数据包协议 
IGMP:网络组管理协议    ARP:地址解析协议 
RARP:反地址解析协议

2.2 IP协议简介

特指为实现在一个相互连接的网络系统上从源地址到目的地传输数据包(互联网数据包)锁提供必要功能的协议。

特点

1.不可靠:他不能保证IP数据包能成功地到达它的目的地,仅提供尽力而为的传输服务

2.无连接:IP并不维护任何关于后续数据包的状态信息。每个数据包的处理是相互独立的。IP数据包可以不按发送顺序接收。

3.IP数据包中含有发送它主机的IP地址(源地址)和接收它主机的IP地址(目的地址)

2.3 TCP协议简介

TCP是一种面向连接的,可靠的传输层通信协议。

主要的功能:提供不同主机上的进程间通信(端对端)

特点

1.建立链接->使用链接->释放链接(虚电路)

2.TCP数据包中包含序号和确认序号

3.对包进行排序并检错,而损坏的包可以被重传

服务对象

需要高度可靠性且面向连接的服务

如HTTP、 FTP、 SMTP等

建立连接时的三次握手:

1)C->SYN 2)S->SYN+ACK 3)C->ACK

释放连接时的四次挥手:

1)C->FIN 2)S->ACK 3)S->FIN 4)C->ACK

2.4 UDP协议简介

UDP是一种面向无连接的传输层通信协议

功能:提供不同主机上的进程间通信(端到端的)

特点:1.发送数据之前不需要建立连接

2.不对数据包的顺序进行检查

3.没有错误检测和重传机制

服务对象

主要用于“查询—应答”的服务

如:NFS、NTP、DNS等

NTP:网络时间协议 DNS:域名系统

3. 网络通信地址

3.1 网卡

又称为网络适配器或网络接口卡NIC,但是现在更多的人愿意使用更为简单的名称"网卡",通过网卡能够使不同的计算机之间连接,从而完成数据通信等功能

3.2 mac地址

mac地址又称为网卡地址

MAC地址,用于标识网络设备,类似于身份证号,且理论上全球唯一

组成:以太网内的MAC地址是一个48bit的值

3.3 IP地址

IP地址是一种internet上的主机编址方式,也称为网际协议地址

3.3.1 IP地址组成

IPV4:使用32bit,由(网络ID,主机ID)两部分组成

子网ID(网络):IP地址中由子网掩码中1覆盖的连续位

主机ID:IP地址中由子网掩码中0覆盖的连续位

image-20230915202009966

3.3.2 IP地址特点

子网ID不同的网络不能直接通信,如果要通信则需要路由器转发

主机ID全为0的IP地址表示网段地址,如10.35.0.0

主机ID全为1的IP地址表示该网段的广播地址,如10.35.255.255

3.3.3 IP地址分类

A类地址:默认8bit子网ID,第一位为0(1~127)

B类地址:默认16bit子网ID,前两位为10(128~191)

C类地址:默认24bit子网ID,前三位为110(192~223)

D类地址:前四位为1110,多播地址(224~239)

E类地址:前五位为11110,保留为今后使用(240~)

A、B、C三类地址是最常用的

公有IP(可直接连接Internet):经由InterNIC所统一规划的IP

私有IP(不可知己连接Internet):主要用于局域网络内的主机联机规划

image-20230916090656042

3.3.4 回环IP地址

主要是测试本机的网络配置,能ping通127.0.0.1说明本机的网卡和IP协议安装都没有问题

【注意】127.0.0.1~127.255.255.254中的任何地址都将回环到本地主机中,不属于任何一个有类别地址类,它代表设备的本地虚拟接口

3.3.5 IP地址设置

Linux:

ifconfig 网卡名 ip地址 [netmask 掩码]

自动获取网络参数(DHCP)

在局域网内会有1台主机负责管理所有的计算机网络参数,当PC启动时就会主动向服务器要求IP参数,若PC获取到服务器给的网络相关参数,那么就可以使用网络功能进行通信

在Linux中重写获取IP地址:

sudo dhclient

拨号ISP(Linux):

sudo pppoeconf
sudo pon dsl-provider  //拨号 ADSL
sudo poff  //断开ADSL

3.4 子网掩码

子网掩码(subnet mask)又叫网络掩码、地址掩码是一个32bit由1和0组成的数值,并且1和0分别连续

作用:指明IP地址中哪些位标识的是主机所在的子网以及哪些位标识的是主机号

特点:必须结核IP地址一起使用,不能单独存在

IP地址中由子网掩码中1覆盖的连续位为子网ID,其余为主机ID

Linux:设置IP地址的掩码和新IP

sudo ifconfig ens33 ip netmask 255.255.255.0

获取动态网络参数,才能上网:

sudo dhclient

3.5 端口

3.5.1 端口概述

TCP/IP协议的应用采用端口通信的进程

用于区分一个系统里的多个进程(网络服务进程)

特点

1.对于同一个端口,在不同系统中对应着不同的进程

2.对于同一个系统,一个端口只能被一个进程拥有

3.一个进程拥有一个端口后,传输层送到该端口的数据全部被该进程接收,同样,进程送交传输层的数据也通过该端口被送出

3.5.2 端口号

类似于pid,用于标识一个进程;

在网络程序中,用端口号(port)来标识一个运行的网络程序

特点

1.端口号是无符号短整型的类型(无符号2个字节,0~65535)

2.每个端口都拥有一个端口号

3.TCP、UDP维护各自独立的端口号

4.网络应用程序,至少要占用一个端口号,也可以占有多个端口号

查看当前主机下哪些服务占用的端口情况:

Linux:

netstat -lntp
netstat -lntp|grep 3306

Window:

netstat -ntr
netstat -ant|findstr 3306

知名端口(1~1023):服务器通常使用的范围

FTP-21,HTTP-80,HTTPS-443,SMTP-25,SSH-22,POP3-110,
IMPA-143,DNS-53

若强制使用,须加root特权

动态端口(1024~65535):应用程序通常使用的范围

【注意】

  • 端口号类似于进程号,同一时刻只能标志一个进程
  • 可以重复使用

4. 数据包的组装、拆解

4.1 数据包在各个层之间的传输

image-20230916093225628

4.2 链路层封包格式

image-20230916093417442

【注意】1.IEEE802.2/802.3封装包格式,常用在无线网络

2.以太网封装包格式,常用在有线局域网

4.3 网络层、传输层封包格式

image-20230916093656579

5. 网络应用开发流程

5.1 TCP—面向连接

基于电话系统服务模式的抽象

每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程。本质上,连接是一个管道,收发数据不但顺序一致,而且内容相同,保证数据传输的可靠性

5.2 UDP—面向无连接

基于邮件系统服务模式的抽象

每个分组都携带完整的目的地址

不能保证分组的先后顺序

不进行分组出错的恢复和重传

不保证数据传输的可靠性

5.3 C/S架构

无论采用面向连接的还是无连接,两个进程通信过程中,大多采用C/S架构client向server发出请求,server接收到后提供相应的服务。

server工作过程

打开一通信通道并告知本地主机,它愿意在一特定端口(如80)上接收客户请求等待客户请求到达该端口。接收客户请求,并发送应答信号,激活一新的线程处理这个客户请求服务完成后,关闭新线程与客户的通信链路。

client工作过程

打开一通信通道并连接到服务器特定端口

向服务器发出服务请求,等待并接收应答

根据需要继续提出请求

请求结束后关闭通信通道并终止