网络初识

本文介绍了网络通信的基本概念,包括IP地址的点分十进制表示法,端口号的作用,以及协议的定义和分类。重点讲解了TCP/IP五层模型,从物理层到应用层的数据封装和分用过程,并举例说明了两台主机间的通信流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一些基本概念认识

IP地址
概念:

IP地址用于定位主机的网络地址,标识了网络上设备所在的位置。也就是说主机在哪。

格式:

IP地址是一个32位的二进制数,通常被分割为4个字节。通常我们使用“点分十进制”的方式来表示主机的IP地址——>表示为a.b.c.d的形式,其中abcd都是取值在0~255的十进制整数。(0~255的原因是因为4个字节,每个字节是8位二进制数,而8位二进制数最大的数转化为10进制为255)。

如:

127.0.0.1——>01111111.00000000.00000000.00000001。

01111111对应的就是127.

端口号
概念:

端口号标识了一个具体的应用程序,用于定位主机中的进程。也就是说有了IP地址仅仅是定位了主机的位置,但是我们的程序在哪里运行还不确定,这时就需要端口号来帮助我们确定具体的应用程序。

格式:

端口号是0~65535范围内的数字。至于为什么是这个范围,可以看一下为什么端口号最大为65535? - 日行一善g - 博客园 这篇文章。

协议
概念:

协议简单来说就是约定。网络协议是网络通信经过的所有网络设备都必须要遵守的一组约定。只有遵守了这个约定,计算机和计算机之间才能相互交流。

协议通常由三要素组成:

  1. 语法:数据与控制信息的格式或者结构。如:在打电话时,电话双方要使用相同的语言。

  1. 语义:要做什么,完成何种动作以及做出哪种反应。

  1. 时序:事情实现顺序的详细说明。(何时进行通信,先讲什么后讲什么)

作用:

类似于:让不同厂商生产的计算机之间能够进行流畅的通信这样的作用。

协议分层
概念:

在网络通信需求场景复杂的情况下,实现的功能呢也会比较复杂,也就是说协议也会变得复杂。

这时,针对这个复杂的大协议,将之拆分成若干个相对简单的小协议,随着将协议拆分成小协议(每个协议负责一部分的功能),此时可以发现某些小协议之间,起到的作用和功能是类似的。针对这些小协议再进行“分类”(将功能才不多的协议放在同一层)。

作用:
  1. 降低了学习和维护的成本。

  1. 可以灵活的针对某一层的协议进行替换。

最重要的就是TCP/IP五层(四层)模型和OSI七层模型。但是OSI七层模型目前只存在于课本中,所以我们重点了解TCP/IP五层(四层)模型。

TCP/IP五层(四层)模型

物理层:约定了网络通信中的基础硬件设备是什么样的。

数据链路层:相邻两个节点之间如何去传输。

网络层:负责地址管理和路由管理。

传输层:端到端之间的传递。

应用层:负责应用程序间沟通。

客户端

就是发送方,发送指令到服务器。

服务器

就是接收方,接收客户端的指令对其进行响应。

当然,客户端和服务器都是相对而言的。

请求

类似于在浏览器的搜索栏输入想要搜索的内容,然后敲回车。

响应

类似于敲回车后,浏览器页面向用户反馈的内容。

两台主机之间的网络通信流程

以QQ为例,A给B发送一个hello。

发送方
1.应用层

用户在输入栏输入hello这个字符串,QQ这个应用程序将这个字符串给构造成一个应用层数据报。

所谓的“应用层数据报”本质上就是一个遵守了约定格式的字样。

但是这个约定的格式只有开发该程序的程序员知道,所以我们在这里假设一下,假设这个格式为:发送方QQ号;发送时间;接收方QQ号;消息内容。

程序要调用操作系统的api,把这个应用层数据报交给传输层。

2.传输层

在传输层中,要把上述应用层数据,构造成传输层数据报。

传输层使用到的协议,最出名的就是UDP和TCP协议,比如此处是使用UDP,就要构造UDP数据报(在应用层数据基础上,加上UDP报头)

这是另一个特定格式的字符串,此处就像字符串拼接一样,将报头和后面的数据拼接到一起。

所谓的报头就是一个标签,通过标签表示出当前要把这个消息怎么去进行传输。

传输层将上面这个UDP数据报交给网络层。

3.网络层

网络层最知名的协议是IP协议。

IP协议要基于上述数据打包成一个IP数据报。

这个也相当于是一个字符串,包含了另外一组的信息。

网络层数据报准备好,还需要进一步交给数据链路层。

4。数据链路层

数据链路层最知名的协议是“以太网”。

基于上述过程,还要打包成一个“以太网数据帧”。

接下来这个数据要继续往下层传递,交给物理层。

5.物理层

将上述二进制的数据转换成电信号/光信号。此时才是真正的将数据发送了出去。

封装

以上过程,从应用层到物理层,“层层加码”的这个过程称为“封装”。

接收方
1.物理层

网卡接收到的是光信号和电信号,是在物理层把这个信号转换成二进制数据的。

转换回的这个数据其实就是一个以太网数据帧。

将这个二进制数据传给数据链路层。

2.数据链路层

数据链路层需要去掉这个数据的帧头和帧尾,取出中间的载荷,交给更上层的网络层IP协议,以太网数据帧帧头里也会记录这个载荷是不是应该IP数据报。

3.网络层

IP协议对这个数据继续进行解析,解析出IP报头,取出IP协议的载荷,把这里得到的数据报再向上传递给上层传输层。

IP数据报里面记录,载荷是UDP还是TCP。

4.传输层

UDP再进行解析,取出报头,取出载荷,交给对应的应用程序。

UDP报头里面有一个重要的字段“目的端口”。目的端口是和一个具体的应用程序关联在一起的,因此可以根据这个端口来把数据交给应用程序。

5.应用层

qq应用程序会根据这个应用层协议对这个数据进行解析,显示到页面上。

至此,A向B传输一个hello这个过程完毕。

分用

上述过程中,从下到上层层解析,这个过程称为“分用”。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunlightʊə

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值