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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络基础 -> 正文阅读

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

本篇我计划简单整理计算机网络中经常出现的抽象概念。这里只做简单基础介绍,具体类似报文格式、功能实现等不做赘述,对于热点协议后面会专门出博客介绍:

URI 和 URL

URL:全称统一资源定位器,网络上每个信息资源都有唯一地址。它标识了一个互联网资源,并指定获取操作该资源的方法。比如:https://www.baidu.com/,后面 www.baidu.com 可以定位到资源地址,前面 HTTPS 标识该资源可以通过 HTTP 协议获取

URI:全称统一资源标志符,通过它也可以确定网络上的唯一资源,区别在于它是某种规则下唯一的产物

举个例子:全北京有很多姓张的老头,但它们所在的小区不同。URL 此时就可以看做:回龙观小区张老头、天通苑小区张老头。。。也就是说:URL 先确定位置,再确定资源,通过这种方式找到唯一资源、而 URI 就类似身份证,通过身份证无论老头在哪都可以区分出来。两者都可以区分出唯一资源,不过 URI 范围更广,URL 更像 URI 的子集

一般情况下我们更倾向通过 URL 访问资源,使用 URI 访问资源意味着不分区域,此时访问格式可能变成这样:123456.html,很难理解


TCP/IP 协议族

TCP/IP 是一组协议,包含:TCP、UDP、IP、DNS、FTP、HTTP 等,通常我们所使用的网络就在 TCP/IP 的基础上运作。至于为什么这样命名,大概是因为协议族中,TCP、IP 协议最重要

协议:是指规则的约定,只有满足相关约定才能交换数据

TCP/IP 最重要的一点在于分层,按层次分为 应用层、传输层、网络层、数据链路层

  • 应用层:向用户提供应用服务时通信的活动,包含 DNS、FTP、HTTP 协议
  • 传输层:提供处于网络连接中的两台计算机之间的数据传输,包含 TCP、UDP 协议
  • 网络层:处理网络上流动的数据包,数据包是网络传输的最小格式,网络层会在众多的选项内选择一条传输路线
  • 数据链路层:处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动等

利用 TCP/IP 协议族进行网络通信时,发送端从应用层往下走,接收端则从链路层往上走:

应用层 -》 报文 -》 传输层 -》 TCP 报文段 -》 网络层 -》 IP 数据包 -》数据链路层 -》 网络架构 -》到达对应服务器从后往前走

发送报文依次添加:TCP 首部、IP 首部、以太网首部、接收报文后依次去除首部,最后提交到上层应用。这种一层一层添加首部的方式也叫封装


协议和服务

在学习 DNS 时,有些地方说它是协议,有些地方说它是服务。协议本身又只是一组规则,有点云里雾里

事实上,两者还是有本质区别的:协议是水平的,服务是垂直的

协议是水平的:回想 TCP/IP 协议族,正是因为客户端和服务器应用层都实现了 HTTP 协议,客户端发送的 HTTP 报文才能被解析处理。也就是说:通过协议可以保证消息发出后可以被正常解析并处理

服务是上下层之间的:传输层为应用层提供服务,即下层通过接口为上层提供服务。只有实现了本层的协议,才能对上层提供服务,而要想实现本层的协议,必须调用下层的服务(数据链路层基于物流组件(光纤)实现)

回到 DNS,它本身是协议,而它的实现才是服务,两者还是有区别的:应用层基于 TCP、UDP 服务实现 DNS 协议,因为实现 DNS 协议,才可以提供 DNS 服务。这也是有些地方说 DNS 是协议,有些地方说 DNS 是服务的原因,角度不同,结果不同


IP、IP 地址、MAC 地址

IP 是 IP 协议,它位于网络层,几乎所有使用网络的程序都会用到 IP 协议,主要作用是把各种数据包传输给对方。要想把数据包传递给对方就离不开 IP 地址以及 MAC 地址

MAC 地址:48 位,通常表示为 12 个 16 进制数,每 2 个 16 进制数通过 : 隔开,如 00:50:29:5A:8H:1E 就是一个 MAC 地址。MAC 地址由制造商分配,应用于数据链路层,通过它将数据从一个节点传递到相同链路的另一个节点

IP 地址:32位,由用 . 分割的 4 个 8 位数组成,如 192.168.0.1 就是一个 IP 地址。IP 地址基于网络拓扑分配,应用于网络层,通过它将数据从一个网络传递到另一个网络


Socket 套接字

Socket 是对网络中不同主机上应用程序之间进行双向通信的端点的抽象,网络进程通信的一端就是一个套接字,不同主机上的进程通过套接字发送报文来通信。例如 TCP 使用 IP + 端口作为 TCP 连接的端点,该端点就是套接字

为了满足不同的传输层协议,Socket 包含三种类型:

  • SOCK_STREAM:流套接字,基于 TCP 传输协议,面向连接、安全、可靠
  • SOCK_DGRAM:数据报套接字,基于 UDP 传输协议,面向无连接,高效,不安全、不可靠
  • SOCK_RAW:原始套接字,用于新实现网络协议的测试等

未完待续

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:35:20  更:2021-07-22 14:36:25 
 
开发: 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年12日历 -2024/12/27 13:46:04-

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