IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络编程基础 -> 正文阅读

[网络协议]计算机网络编程基础

一、计算机网络发展简史

1.1 早起的电路交换网

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

电路交换网特点:

1. 建立链接–>使用链接–>释放链接
2. 物理通路被通信双方独占

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

1.2 最早的计算机网络

是由美国创造的ARPA,但是最早的ARPA无法连接不同类型的计算机和不同类型的操作系统。

1.3 计算机网络中数据采用分组交换的方式

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

分组的组成:

1.4 计算机网络中数据的交换方式

交换方式——存储转发

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

特点:

1. 以分组作为传输单位
2. 独立的选择转发路由
3. 逐段占用,动态分配传输带宽。

1.5 计算机网络的世界语——TCP/IP协议

到现在为止,只要是能够通信的机器,能够上网的机器,一定用的就是TCP/IP协议族。

二、TCP/IP协议简介

为了减少协议设计的复杂性,大多数网络模型均采用分层的方法来组织
每一层利用下一层提供的服务来为上一层提供服务
本层服务的实现细节对上层屏蔽

2.1 分层结构

为了能够实现不同类型计算机和不同类型的操作系统之间进行通信,引入了分层的概念

最早的分层体系结构是OSI开放系统互联模型,是由国际化标准组织(ISO)指定的,由于OSI过于复杂,所以到现在为止也没有适用,而使用的是TCP/IP协议族。

OSI一共分为7层,TCP/IP协议族一共四层,虽然TCP/IP协议族层次少,但是却涵盖了OSI所有任务

应用层:应用程序间沟通的层,例如:FTP,Telnet、HTTP等;
传输层:提供进程间的数据传送服务,负责传送数据,提供应用程序端到端的逻辑通信,例如:TCP、UDP;
网络层:提供基本的数据封包传送功能,最大可能的让每个数据包都能够到达目的主机,例如:IP、ICMP等;
链路层:负责数据帧的发送和接收。

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

2.2 IP协议简介

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

特点:
- 不可靠:他不能保证IP数据包能成功地到达它的目的地,仅提供尽力而为的传输服务;
- 无连接:IP并不维护任何关于后续数据包的状态信息。每个数据包的处理是相互独立的。IP数据包可以不按发送顺序接受。

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

2.3 TCP协议简介

RTCP协议,传输控制协议

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

功能:提供不同主机上的进程间通信。

特点:

1. 建立链接–>使用连接–>释放链接(虚电路)
2. TCP数据包中包含序列和确认序列
3. 对包进行排序并检错,而损坏的包可以被重传。

服务对象
? 需要高度可靠性且面向连接的服务
? 如HTTP、FTP、SMTP等

2.4 UDP协议简介

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

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

特点:
1. 发送数据之前不需要建立链接;
2. 不对数据包的顺序进行检查;
3. 没有错误检测和重传机制。

服务对象:主要用于“查询——应答”的服务,如:NFS、NTP、DNS等。

三、MAC地址、IP地址、Netmask、端口

3.1 mac地址

3.1.1 网卡

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

3.1.2 mac地址

每一个网卡在出场时,都会给分配一个编号,这个编号就称之为mac地址;

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

组成:以太网内的MAC地址是一个48bit的值,通常人为识别时是通过16进制数来识别的,以两个十六进制为一组,一共分为6组,每组之间通过:隔开,前三组称为厂商ID,后三组称为设备ID。

如何查询ubuntu的mac地址:

ifconfig

如何查询Windows的mac地址:
鼠标右键点击计算机右下角电脑图标,选择网络和共享中心,左边选择更改适配器设置,找到自己联网的图标,双击打开,点击详细信息,即可找到对应的mac地址。

3.2 IP地址

IP地址是一种Internet上的主机编址方式,也称为网际协议地址
IP地址是任意一台主机在网络中的唯一标识。

3.2.1 IP地址的分类

ipv4:占32位
ipv6:占128位

3.2.2 IPV4地址的组成

ipv4一般使用点分十进制字符串来标识,比如192.168.3.103.

使用32bit,由{网络ID,主机ID}两部分组成;

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

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

3.2.3 ip地址特点

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

主机ID全为0的IP地址标识网段地址

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

例如:
? 198.168.3.10和192.168.3.111可以直接通信
? 如果192.168.3.x网段而言,192.168.3.0表示网段,192.168.3.255表示广播地址

3.2.4 ipv4地址的分类(依据前八位来进行区分)

A类地址:默认8bit子网ID,第一位为0,范围00000000-01111111,范围0.x.x.x-127.x.x.x
B类地址:默认16bit子网ID,前两位为10,前八位10000000-10111111,范围128.x.x.x-191.x.x.x
C类地址:默认24bit子网ID,前三位为110,前八位11000000-11011111,范围192.x.x.x-223.x.x.x
D类地址:前四位为1110,多播(组播)地址,前八位11100000-11101111,范围224.x.x.x-239.x.x.x
E类地址:前五位为11110,保留为今后使用,11110000-11110111,范围240.x.x.x-255.x.x.x

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

3.2.5 私有IP地址

公有IP(可直接连接Internet):经由InterNIC所统一规划的IP
私有IP(不可直接连接Internet):主要用于局域网络内的主机联机规划

3.2.6 回环IP地址

通常127.0.0.1称为回环地址

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

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

3.2.7 查询ip地址的命令

在ubuntu中

ifconfig

在Windows中

ipconfig
3.2.8 如何判断主机是否可以连通通信
ping ip地址

如果显示0% packet loss,就表示可以正常通信

3.3 子网掩码

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

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

特点:必须结合IP地址一起使用,不能单独使用;IP地址中由子网掩码中1覆盖的连续位为子网ID,其余为主机ID。

192.168.220.0/255.255.255.0

192.168.220.0/24

手动配置如下(linux):

ifconfig eth0 10.0.31.96 netmask 255.255.255.0

默认的子网掩码:

A类ip地址的默认子网掩码为255.0.0.0

B类ip地址的默认子网掩码为255.255.0.0

C类ip地址的默认子网掩码为255.255.255.0

3.4 端口

3.4.1 端口概述

TCP/IP协议采用端口标识通信的进程,用于区分一个系统里的多个进程

特点:

1. 对于同一个端口,在不同系统中对应着不同的进程
2. 对于同一个系统,一个端口只能被一个进程拥有
3. 一个进程拥有一个端口后,传输层送到该端口的数据全部被该进程接收,同样,进程交送传输层的数据也通过该端口被传出

3.4.2 端口号

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

特点:

1. 端口号是无符号短整型的类型;
2. 每个端口都拥有一个端口号
3. TCP、UDP维护各自独立的端口号
4. 网络应用程序,至少要占用一个端口号,也可以占用多个端口号

知名端口(1~1023)

? 由互联网数字分配机构(IANA)根据用户需要进行统一分配,例如:FTP——21,HTTP——80等,服务器通常使用的范围,若强制使用,须加root特权

动态端口(1024~65535)

? 应用程序通常使用的范围,一般我们可以使用的端口号就是在这个范围,比如666、7777、8888等

注意:端口号类似于进程号,同一时刻只能标识一个进程,可以重复使用

四、数据包在各个层中的传输

4.1 数据包在各个层中的传输

4.2 链路层封包格式

目的地址:目的mac地址;
源地址:源mac地址
类型:确定以太网后面跟的是哪个协议
0x0800 ip协议
0x0806 arp协议
0x0835 rarp协议

注意:1.IEEE802.2/802.3封装常用在无线;2.以太网封装常在有线局域网

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

五、网络应用程序开发流程

5.1 TCP-面向连接

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

5.2 UDP-面向无连接

邮件系统服务模式的抽象,每个分组都携带完整的目的地址,不能保证分组的先后顺序,不进行分组出错的恢复和重传,不保证数据传输的可靠性。

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

5.3 C/S架构示例(面向连接)

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

client工作工程:
打开一通信通道并连接到服务器特定端口
向服务器发出服务请求,等待并接收应答
根据需要继续提出请求
请求结束后关闭通信通道并终止

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 21:14:47  更:2022-10-08 21:17:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 9:31:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码