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

目录

  • 相关系列文章
  • 前言
  • 一、定义
  • 二、术语简介
  • 三、协议的组成要素
  • 四、网络层次划分
  • 五、常见网络协议划分
  • 六、常用协议介绍
    • (一)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.mzph.cn/news/74516.shtml

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

相关文章

Python小知识 - 如何使用Python进行机器学习

如何使用Python进行机器学习 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 机器学习是人工智能的一个分支,是让计算机自动“学习”。学习的过程是从经验E中获得知识K。经验E可以是一个数据集,比如一个图像数据集。知识K可以是计算机…

【系统设计系列】 负载均衡和反向代理

系统设计系列初衷 System Design Primer: 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版: https://github.com/donnemart…

运算符重载(个人学习笔记黑马学习)

1、加号运算符重载 #include <iostream> using namespace std; #include <string>//加号运算符重载 class Person { public://1、成员函数重载号//Person operator(Person& p) {// Person temp;// temp.m_A this->m_A p.m_A;// temp.m_B this->m_B p…

【算法】快速排序 详解

快速排序 详解 快速排序1. 挖坑法2. 左右指针法 &#xff08;Hoare 法&#xff09;3. 前后指针法4. 快排非递归 代码优化 排序&#xff1a; 排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&…

docker介绍和安装

docker安装 下载Docker依赖组件 yum -y install yum-utils device-mapper-persistent-data lvm2 设置下载Docker的镜像源为阿里云 yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo 安装Docker服务 yum -y install docker-ce 安…

OpenCV项目实战(1)— 如何去截取视频中的帧

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。针对一段视频&#xff0c;如何去截取视频中的帧呢&#xff1f;本节课就给大家介绍两种方式&#xff0c;一种方式是按一定间隔来截取视频帧&#xff0c;另一种方式是截取视频的所有帧。希望大家学习之后能够有所收获&#x…

计算机网络概述

目录 一、计算机网络的作用及互联网概述 1.1计算机网络在信息时代中的作用 1.2基本概念 1.3互联网基础架构发展三个阶段 1.4互联网的标准化工作 二、互联网的组成 2.1互联网组成 2.2互联网的边缘部分 2.3互联网的核心部分 三、计算机网络的类别 3.1计算机网络的定义:…

yapi以及gitlab的容器化部署

yapi部署&#xff1a; https://blog.csdn.net/Chimengmeng/article/details/132074922 gitlab部署 使用docker-compose.yml version: 3 services: web: image: twang2218/gitlab-ce-zh:10.5 restart: always hostname: 192.168.xx.xx environm…

企业架构LNMP学习笔记19

Nginx 第三方模块的使用&#xff1a; Nginx官方没有的功能&#xff0c;开源开发人员定制开发了一些功能&#xff0c;把代码公布出来&#xff0c;可以通过编译加载第三方模块的方式&#xff0c;使用新功能。 NGINX 3rd Party Modules | NGINX shell > tar xvf ngx-fancyinde…

IDEA中的MySQL数据库所需驱动包的下载和导入方法

文章目录 下载驱动导入方法 下载驱动 MySQL数据库驱动文件下载方法&#xff1a; 最新版的MySQL版本的驱动获取方法&#xff0c;这个超链接是下载介绍的博客 除最新版以外的MySQL版本的驱动获取方法&#xff0c;选择Platform Independent&#xff0c;选择第二个zip压缩包虾藻…

浅谈redis未授权漏洞

redis未授权漏洞 利用条件 版本比较高的redis需要修改redis的配置文件&#xff0c;将bind前面#注释符去掉&#xff0c;将protected-mode 后面改为no 写入webshell config get dir #查看redis数据库路径 config set dir web路径# #修改靶机Redis数据库路径 config set dbfilen…

QT QTabWidget 控件 使用详解

本文详细的介绍了QTabWidget控件的各种操作&#xff0c;例如&#xff1a;新建界面、设置页面名字、设置提示信息、设置页面激活、设置标题栏位置、设置页面关闭按钮、设置页面关闭按钮、获取页面下标、获取页面总数、清空所有页面、删除某个页面、设置拖拽移动、设置显示页面、…

MyBatis-Plus排除不必要的字段

查询学生信息排除年龄列表 &#x1f4da;&#x1f50d; 使用MyBatis-Plus排除某些字段。如果你想要进行查询&#xff0c;但又不需要包含某些字段&#xff0c;那么这个功能将非常适合你。&#x1f50d;&#x1f393;&#x1f4dd; 1. 学生信息查询-排除年龄列表 在使用 MyBat…

【计算机网络】HTTP(下)

本文承接上文的代码进行改造&#xff0c;上文链接&#xff1a;HTTP上 文章目录 1. 实现网站跳转实现 自己的网站跳转 2. 请求方法(get) && 响应方法(post)GET方法POST方法GET与POST的应用场景 3. HTTP状态码在自己设计的代码中发现4043开头的状态码(重定向状态码)永久…

一种基于注意机制的快速、鲁棒的混合气体识别和浓度检测算法,配备了具有双损失函数的递归神经网络

A fast and robust mixture gases identification and concentration detection algorithm based on attention mechanism equipped recurrent neural network with double loss function 摘要 提出一个由注意力机制组成的电子鼻系统。首先采用端到端的编码器译码器&#xff…

容器编排学习(二)镜像制作和私有仓库介绍

一 Dockerfile 1 概述 commit的局限 很容易制作简单的镜像&#xff0c;但碰到复杂的情况就十分不方便例如碰到下面的情况需要设置默认的启动命令需要设置环境变量需要指定镜像开放某些特定的端口 Dockerfile就是解决这些问题的方法 Dockerfile是一种更强大的镜像制作方式…

VMware虚拟机+Centos7 配置静态,动态IP

本章目录 一、查看网关&#xff1a; 编辑–>虚拟网络编辑器二、点击NAT设置三、记住网关IP待会要用四、配置静态ip地址1、进入存放修改IP地址的目录2、修改ip地址的文件3、编辑文件4、文件&#xff08;编辑好后退出&#xff09; 五、重启网络六、测试1、linux上查看IP地址的…

爬虫爬取mp3文件例子

相信训练模型时数据集的获取也是一个很头疼的事情&#xff0c;搞cv领域的可以扛着摄像头架起三脚架拍摄获取&#xff08;以前干过&#xff09;&#xff0c;但是如果是nlp领域的呢&#xff0c;特别是chatgpt等大模型出来后对这类文本等数据的需求更大&#xff0c;如果没有现成的…

【AIGC专题】Stable Diffusion 从入门到企业级实战0403

一、前言 本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第03节&#xff0c; 利用Stable Diffusion ControlNet Canny模型精准控制图像生成。本部分内容&#xff0c;位于整个Stable Diffusion生态…

Scrum敏捷模式的优势点、实践经验及适用企业

Scrum敏捷模式是一种灵活、适应性强的开发方法&#xff0c;其核心理念是以短周期、高频率的方式进行项目开发&#xff0c;确保团队能够快速响应变化。 Scrum包含三个角色&#xff1a;产品负责人&#xff08;Product Owner&#xff09;、Scrum Master和开发团队&#xff08;Tea…