建站系列(三)--- 网络协议

news2024/11/25 14:40:35

目录

  • 相关系列文章
  • 前言
  • 一、定义
  • 二、术语简介
  • 三、协议的组成要素
  • 四、网络层次划分
  • 五、常见网络协议划分
  • 六、常用协议介绍
    • (一)TCP/IP
    • (二)HTTP协议(超文本传输协议)
    • (三)SSH协议

相关系列文章

建站系列(一)— 网站基本常识
建站系列(二)— 域名、IP地址、URL、端口详解
建站系列(三)— 网络协议
建站系列(四)— Web服务器之Apache、Nginx
建站系列(五)— 前端开发语言之HTML、CSS、JavaScript
建站系列(六)— 后端开发语言
建站系列(七)— 常用前后端框架
建站系列(八)— 本地开发环境搭建(WNMP)

前言

提及Web,便不得不提网络协议,前文仅提到过一次网络协议,当然并非是因为网络协议不重要,网络协议可以说是整个计算机网络中互相通信的基础,在网络中占有举足轻重的地位,相比前文所讲,网络协议也更加难让人理解,那么接下来就好好来学习一下吧!

一、定义

  • 网络协议,是人为规定的计算机网络中互相通信的对等实体之间进行数据交换所需要遵循的规则、标准或约定的集合
  • 简单理解,协议即规则,网络协议即网络中设备间通信的规则(当然实际上却是一个非常复杂的过程)。
  • 例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。
  • 如果上面的例子你没看懂,那就再简化一下吧,你想和一个法国人交流(假设你不懂法语),但是双方语言不通导致你们说的话对方都听不懂,此时你们就无法进行正常交流,如果给你们加一下条件要求你们都使用英语的话那么便可以正常的进行沟通,因为双方都会英语也就听得懂对方说的是什么。而要求使用英语便是一项简单的协议。

二、术语简介

  • 上文所提的对等实体通常是指计算机网络体系结构中处于相同层次的信息单元。一般系统网络协议包括五个部分:通信环境,传输服务,词汇表,信息的编码格式,时序、规则和过程。
  • TCP/IP是因特网的正式网络协议,是一组在许多独立主机系统之间提供互联功能的协议,规范因特网上所有计算机互联时的传输、解释、执行、互操作,解决计算机系统的互联、互通、操作性,是被公认的网络通信协议的国际工业标准。TCP/IP是分组交换协议,信息被分成多个分组在网上传输,到达接收方后再把这些分组重新组合成原来的信息。除TCP/IP外,常用的网络协议还有UDP、HTTP等。

三、协议的组成要素

  • (1)语义:语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应;
  • (2)语法:语法是用户数据与控制信息的结构与格式,以及数据出现的顺序;
  • (3)时序:时序是对事件发生顺序的详细说明。(也可称为“同步”)。
  • 人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。

四、网络层次划分

  • 为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。其中第四层完成数据传送服务,上面三层面向用户。

  • OSI模型

名称层次功能
物理层1实现计算机系统与网络间的物理连接
数据链路层2进行数据打包与解包,形成信息帧
网络层3提供数据通过的路由
传输层4提供传输顺序信息与响应
会话层5建立和中止连接
表示层6数据转换、确认数据格式
应用层7提供用户程序接口
  • 其中第4层完成数据传送服务,上面3层面向用户。对于每一层,至少制定两项标准:服务定义和协议规范。前者给出了该层所提供的服务的准确定义,后者详细描述了该协议的动作和各种有关规程,以保证服务的提供。
  • 除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:
    ![QQ图片20220320224340.png][1]

五、常见网络协议划分

  • 应用层:HTTPFTPDNSDHCPSSHTelnet、SMTP等
  • 表示层:ASCII、GIF、JPEG等
  • 会话层:SCP、RPC、SQL、AppleTalk、ASP等
  • 传输层:TCPUDP
  • 网络层:IP、IPX、ICMP、ARP等
  • 数据链路层:PPP、ATM等
  • 物理层:网卡、网线、集线器、中继器、调制解调器等

六、常用协议介绍

(一)TCP/IP

  • TCP/IP并非是单独一个协议,而是指一个体系结构,TCP/IP是由一组具有专业用途的多个子协议组合而成的,这些子协议包括TCP、IP、UDP、ARP、ICMP等。TCP/IP凭借其实现成本低、在多平台间通信安全可靠以及可路由性等优势迅速发展,并成为Internet中的标准协议。

  • IP协议(Internet Protocol,网际互连协议)

    • IP是整个TCP/IP协议族的核心,也是构成互联网的基础。IP位于TCP/IP模型的网络层,规定了一套地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过按位与运算后就可以得到网络地址。
  • UDP协议(User Datagram Protocol,用户数据报协议)

    • UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,TCP协议就诞生了
  • TCP(Transmission Control Protocol,传输控制协议)

    • TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。为了保证传输的可靠性,TCP协议在UDP基础之上建立了三次对话的确认机制,即在正式收发数据前,必须和对方建立可靠的连接。TCP数据包和UDP一样,都是由首部和数据两部分组成,唯一不同的是,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
  • TCP建立连接的三次握手

    • TCP三次握手(简化)的过程如下:
    • (1)客户端发送报文给服务器端,请求建立连接;
    • (2)服务器端接收到来自客户端的TCP报文之后。返回一段TCP报文表明确认收到数据;
    • (3)客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的。
    • 三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
  • TCP断开连接的四次挥手

    • TCP四次挥手(简化)的过程如下:
    • (1)客户端想要断开连接,主动向服务器端发送一段TCP报文,表明请求断开连接;
    • (2)服务器端接收到从客户端发出的TCP报文之后,确认了客户端想要释放连接,随后服务器端进入(半关闭状态)并返回一段TCP报文;
    • (3)服务器端自从发出确认报文之后,经过一段时间后,做好了释放服务器端到客户端方向上的连接准备,再次向客户端发出一段TCP报文;
    • (4)客户端收到从服务器端发出的TCP报文,确认了服务器端已做好释放连接的准备,并向服务器端发送一段报文,服务器端收到从客户端发出的TCP报文之后,正式确认关闭服务器端到客户端方向上的连接。
  • FTP协议

    • FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
    • 默认情况下FTP协议使用TCP端口中的20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20,如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
  • Telnet协议

    • Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

(二)HTTP协议(超文本传输协议)

  • HTTP是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。
  • 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
  • HTTP状态码
  • HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。
常见状态码描述
100临时相应,客户端应继续其请求
101服务器根据客户端的请求切换协议
200请求成功
201请求成功并且服务器创建了新的资源
202服务器已经接收请求,但尚未处理
203非授权信息,服务器已成功处理请求,但返回的信息可能来自另一来源
204无内容。服务器成功处理,但未返回内容
205重置内容,服务器处理成功,用户终端应重置文档视图。可通过此返回码清除浏览器的表单域
206部分内容,服务器成功处理了部分请求
300多种选择,针对请求,服务器可执行多种操作
301永久移动(重定向),请求的资源已被永久的移动到新的位置,返回信息会包括新的URI,浏览器会自动定向到新URI
302临时移动,与301类似,但资源只是临时被移动,客户端应继续使用原有URI
303查看其它地址,与301类似,使用GET和POST请求查看
304未修改,所请求的资源未修改,服务器返回此状态码时,不会返回任何资源
305使用代理,所请求的资源必须通过代理访问
307临时重定向,与302类似,使用GET请求重定向
400请求参数有误,当前请求无法被服务器理解
401请求需要用户的身份验证
402预留状态码,将来使用
403服务器已经理解请求,但是拒绝执行此请求
404请求失败,请求的资源未在服务器上发现
405客户端请求中的请求方法不能被用于请求相应的资源
406服务器无法根据客户端请求的内容特性完成请求
407与401响应类似,只不过客户端必须在代理服务器上进行身份验证
408请求超时
500服务器内部错误,无法完成请求
501服务器不支持当前请求,无法完成请求
502作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
503临时的服务器维护或者过载,服务器当前无法处理请求
504充当网关或代理的服务器,未及时从远端服务器获取请求
505服务器不支持或者拒绝支持在请求中所使用的HTTP协议版本,无法完成请求

(三)SSH协议

  • SSH(Secure Shell,安全外壳协议)协议为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题

网络协议内容颇多,此处介绍的也仅是其中一部分,或许难以理解,还需各位多做功课,WEB知识深如海洋,愿你我共同探索!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/994657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

robotframework 获取当前时间

1、获取年月日时分秒格式的数据 命令:${time} Get Current Date result_format%Y%m%d%H%M%S 日期时间显示结果显示形式:20230908102553 2、获取时间戳形式的数据 命令: ${time} Get Current Date result_formattimestamp …

私有gitlab的搭建和配置教程

文章目录 1. 说明2. 安装操作2.1 依赖项2.2 gitlab-ce2.3 简要配置2.4 网页操作2.5 中文配置2.6 其他操作 3. 配置https3.1 配置证书3.2 url配置3.3 网页访问3.4 认证错误 4. ssh操作4.1 生成文件4.2 web配置4.3 额外操作 1. 说明 此教程基于Ubuntu22.04进行阐述,只…

# Spring MVC与RESTful API:如何设计高效的Web接口

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

【MySQL】详解聚合查询、多表查询

MySQL 增删查改(进阶) 文章目录 MySQL 增删查改(进阶)01 表的设计表的三大范式 02 查询操作进阶新增聚合查询countsumavgmaxmin 分组查询 GROUP BYHAVING 联合查询/多表查询关键思路引入内连接外连接左外连接:left joi…

WAMP服务器对python进行配置

WAMP服务器中安装python WAMP服务器中安装python 步骤 D:\wamp\bin\apache\Apache2.4.4\conf\httpd.conf // 打开找到Wamp安装目录下,apache的配置文件 将该配置文件备份一份 LoadModule cgi_module modules/mod_cgi.so // 找到配置文件中该行,把行前面…

探索OLED透明屏触摸技术:创新引领智能生活的未来

OLED透明屏触摸技术作为一项创新技术,正在引领智能生活的未来。’ 通过将透明屏和触摸技术相结合,OLED透明屏触摸设备不仅具备了OLED显示屏的优势,还具备了触摸操作的便利性, 在这里,尼伽将介绍OLED透明屏触摸技术的…

Linux教程||Linux 系统启动过程

Linux 系统启动过程 linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。运行init。系统初始化。建立终端 。用户登录系统。 内核引导 当计算机打开电源后,首先是B…

Apache Hive之数据查询

文章目录 版权声明数据查询环境准备基本查询准备数据select基础查询分组、聚合JOINRLIKE正则匹配UNION联合Sampling采用Virtual Columns虚拟列 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利…

Linux指令二【进程,权限,文件】

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行 资源分配和调度的一个独立单位,是应用程序运行的载体。 一、进程基本指令 1.ps:当前的用户进程 ps 只显示隶属于自己的进程状态ps -aux 显示所有进程…

JavaScript基础入门之输出

目录 目录 前言 系列文章列表 JavaScript初学 思维导图 1,如何在Edge浏览器中执行 JavaScript 1.1,首先按F12 1.2,使用控制台窗口调试js代码 1.2.1,如何使用 1.2.2,进行js测试使用 1.3,Edge小脚本 1.3.1,如何创建脚本 1.3.2,运行脚本 2,Ja…

CRC原理介绍及STM32 CRC外设的使用

1. CRC简介 循环冗余校验(英语:Cyclic redundancy check,简称CRC),由 W. Wesley Peterson 于 1961 年首次提出的一种纠错码理论。 CRC是一种数据纠错方法,主要应用于数据通信或者数据存储的场合&#xff…

计算机专业毕业设计项目推荐02-个人医疗系统(Java+原生Js+Mysql)

个人医疗系统(Java原生JsMysql) **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以…

Javase | String字符串-1

目录: 1.字符串 (String)2.new String对象 和 不new String对象时内存分析:2.1 不new String对象时内存分析2.2 new String对象时内存分析 3.以下程序一共创建了几个对象?4.String类中常用“构造方法”String( )String(byte [ ] b)String( by…

字符串逆序(不使用库函数并用递归实现)

文章目录 前言一、题目要求二、解题步骤1.大概框架2.如何反向排列?3.模拟实现strlen4.实现反向排列5.递归实现反向排列 总结 前言 嗨,亲爱的读者们!我是艾老虎尤,。今天,我们将带着好奇心,探索一个题目&am…

显示器鼠标滚动时或者拖拽文字变为绿色

新电脑,新显示器,看文章时滚动鼠标滑轮,文字颜色就变为绿色。 拖住文本文档或者浏览器等有文字的窗口,文字也会变为绿色。 静止时一点儿问题没有。 以下视频展示滚动和拖拽的操作,视频看不出变色,只参考…

TuyaOS开发学习笔记(2)——NB-IoT开发SDK架构、运行流程

一、SDK架构 1.1 架构框图 基于 TuyaOS 系统,可以裁剪得到的适用于 NB-IoT 协议产品接入的 SDK。SDK 将设备配网、上下行数据通信、产测授权、固件 OTA 升级等接口进行封装,并提供相关函数。 1.2 目录结构 1.2.1 TuyaOS目录说明 adapter:T…

transformer 总结(超详细-初版)

相关知识链接 attention1attention2 引言 本文主要详解 transformer 的算法结构以及理论解释,代码实现以及具体实现时候的细节放在下一篇来详述。 下面就通过上图中 transformer 的结构来依次解析 输入部分(Encode 侧) input 输出主要包含 两个部分&#xff1a…

[acwing周赛复盘] 第 120 场周赛20230909

[acwing周赛复盘] 第 120 场周赛20230909 总结5146. 最大GCD1. 题目描述2. 思路分析3. 代码实现 5147. 数量1. 题目描述2. 思路分析3. 代码实现 5148. 字符串匹配1. 题目描述2. 思路分析3. 代码实现 六、参考链接 总结 T1好难啊。T1 数学T2 dfs/数位dpT3 计数贪心 5146. 最大…

第51节:cesium 范围查询(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><el-button-group class="top_item"><el-button type=

render和jsx

render和jsx 1..vue文件最后会变成一个对象。 一个vue文件要么是render写法&#xff0c;要么是模板写法。 为什么React在大型项目中比较适合&#xff1f; 在大型项目中比较适合&#xff1f; 因为React使用jsx&#xff0c;比较灵活。