首页 > 其他分享 >独立开发者系列(5)——端口与协议

独立开发者系列(5)——端口与协议

时间:2024-06-21 17:27:32浏览次数:27  
标签:协议 系列 端口 http TCP 开发者 服务器 客户端

这也是开发者的入门基础,需要理解端口和协议,否则配置各种应用软件的时候,各种端口和通讯机制迷迷糊糊(包括端口冲突,修改端口,端口查看检查,应用服务端口异常占用,还有一些开发时候的端口技巧),很容易导致安装软件失败后,排查问题异常困难。俩操作系统之间需要通讯,是通过端口进行的。端口号范围 0-65535之间,端口通讯协议基本是TCP(可靠性通讯,三次握手确保可靠,通讯性能偏低)或者UDP(不可靠性,但是连接速度比较快)。
  简单说明下 TCP是怎样保证通讯的可靠性的,这样就能知道为什么大部分的服务都是通过tcp协议完成,三次握手流程连接:

第一步:客户端选择一个初始序列号(ISN)并将其发送给服务器,请求建立连接。这个包只包含SYN标志位被设置(SYN=1),同时序列号字段包含ISN。
  第二步: 服务器收到客户端的SYN包后,如果同意连接请求,会发送一个SYN-ACK包作为响应。这个包的SYN和ACK标志位都被设置(SYN=1, ACK=1),并且序列号是服务器选择的ISN,确认号(ACK)字段是客户端ISN加1.

第三步: 客户端收到服务器的SYN-ACK包后,会发送一个ACK包来确认连接的建立。这个包只有ACK标志位被设置(ACK=1),确认号是服务器的ISN加1,序列号是客户端的ISN加1

为了更直观的理解端口,我们可以直接打开自己的电脑,WIN+R 然后键入CMD,netstat  -a  (查看自己电脑连接的所有协议)只要打开任意网站,可以看到端口显示如下:

第一列告诉我们这是TCP协议,如果是UDP协议前面会显示UDP(常用的QQ聊天是UDP协议),第二列显示的是监听的端口,本地电脑监听的端口,第三列是连接的远程服务器端口,最后那个表示连接状态。

而在TCP协议里面,我们最常用的协议是大名鼎鼎的http协议,也基本就是我们开发出来的系统让客户使用的主角。当然http协议本身也有很多版本,但是是基于TCP的进一步封装,包括增加了各种状态码。当然tcp也还有其他的常用使用,比如FTP也是tcp协议,相对没有http协议应用广泛。

这里进一步解析下http协议,这个牵涉到我们独立部署服务器的选择,端口的更改,请求方法的理解。

可以这样理解,http协议是对TCP协议进行的一个更加完善独特的封装。这个协议里面定义了很多东西。

首先定义了是客户端发出请求——服务器端接受请求模式(客户端一般是我们的浏览器,服务器端是我们安装的nginx  apache 或者自己写的简单服务器)

然后定义了很多请求方法,如GET、POST、PUT、DELETE 。很多框架根据根据请求方法已经自动封装了CURD的使用。

然后还定义了请求头部的格式,包括云溪我们自己定义任意头部信息字段。这样我们除了发送正文内容之外,还可以发很多其他的信息。

还有更重要的,定义了各种响应码,类似503 (访问异常) 500(服务器内部错误)404 找不到网页,401未授权访问  200(正常访问)这样客户端就能根据错误码进行报错提示。

还可以通过https实现访问的数据加密。

可以看到http协议在TCP协议基础上,规定了很多访问应用层面访问,这样全部的开发语言只需要按照这套协议开发对应逻辑,即可完成。

理解了端口,TCP协议,HTTP协议,还有一个重要概念,就是http的中间人攻击,攻击者可以通过劫持流量的方式,直接查看到客户端与服务器端俩边的通讯信息,也就是如果是重要的信息,通过http协议传输,是存在中途信息泄露风险的,在很多公共路由的访问,攻击者拿到路由信息之后,就可以截取你访问的目标网址和查看访问信息,这个如果是支付相关信息是非常危险的。所以后面基本采用https传输数据。

https传输数据的流程(理解这个,你就能理解你开发出来的数据,为什么是安全的)

  1. 客户端(如浏览器)和服务器在开始通信之前,首先进行密钥交换。服务器会向客户端发送其公钥。
  2. 服务器发送的公钥通常包含在SSL证书中。客户端会验证证书的有效性,包括证书是否由受信任的证书颁发机构签发,以及证书是否过期
  3. 一旦证书验证通过,客户端和服务器将使用公钥加密一个对称密钥,然后将这个对称密钥发送给服务器。由于对称密钥较短,因此可以快速加密和解密
  4. 服务器使用私钥解密接收到的对称密钥,然后客户端和服务器都将使用这个对称密钥来加密和解密它们之间的通信。

 所以https传输状态下,即使攻击者拿到了你们之间的通讯数据,也是密文,是无法知晓其具体内容的,这导致https访问的安全性,不过由于每次涉及加密和解密,会导致性能上有点损耗。

   理解 端口  协议  http  https 这四个基础的概念,这样你对你开发出来的系统是怎样和客户端交互的,就能有个清晰的理解。

标签:协议,系列,端口,http,TCP,开发者,服务器,客户端
From: https://blog.csdn.net/weixin_43435138/article/details/139866471

相关文章

  • 离线使用端口扫描工具Nmap和Netcat
    1.安装nmap命令Centos7+系统离线安装nmap命令链接:https://pan.baidu.com/s/1jqNbRNpctXgUfa4Qfpu4Pg提取码:0124rpm-ivh  *********.rpm2.进行端口扫描使用Nmap扫描目标主机,例如扫描本地主机localhost: sudonmap-sS-p-localhost-sS:使用TCPSYN扫描。-p-:......
  • Anthropic 发布 Claude 3.5 Sonnet;欧洲杯首次引入虚拟实时广告丨 RTE 开发者日报 Vol.
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观......
  • 《C++ Primer》导学系列:第 7 章 - 类
    7.1定义抽象数据类型7.1.1类的基本概念在C++中,类是用户定义的类型,提供了一种将数据和操作这些数据的函数(成员函数)组合在一起的方法。类定义了对象的属性和行为,通过实例化类来创建对象。7.1.2定义类定义类时,需要指定类的名称,并在类体内声明数据成员和成员函数。类定义的......
  • Red Hat系列的Linux发行版中如何安装python3.9
    该发行版使用yum或dnf作为包管理器:首先更新你的系统和已有的包。在终端输入以下命令:sudoyum-yupdate 安装依赖项:sudoyum-ygroupinstall"DevelopmentTools"sudoyum-yinstallopenssl-develbzip2-devellibffi-devel 下载Python3.9的源代码:wget......
  • 【QCustomPlot实战系列】QCPGraph堆叠图
    将一个QCPGraph叠加到另一个QCPGraph上显示,就得到了折线堆叠图staticQCPScatterStyleGetScatterStyle(constQColor&color){QPenpen(color,2);returnQCPScatterStyle(QCPScatterStyle::ssCircle,pen,Qt::white,......
  • 【ARMv8/ARMv9 硬件加速系列 2.2 -- ARM NEON 的加减乘除(左移右移)运算】
    文章目录NEON加减乘除NEON加减乘除下面代码是使用ARMv8汇编语言对向量寄存器v0-v31执行加、减、乘以及左移和右移操作的示例。ARMv8的SIMD指令集允许对向量寄存器中的多个数据进行并行操作。v0和v1加载数据,对它们进行加、减和乘,左移和右移操作。最后,我们会将结......
  • 数学建模系列(1/4):数学建模简介
    引言数学建模是将现实中的问题转化为数学语言,通过构建数学模型加以解决的一门强大工具。其应用广泛,涵盖了从工程、金融到生物学等多个领域。本文将详细讲解数学建模的基本概念、历史背景、应用领域、数学建模的步骤,以及一个实际案例。1.什么是数学建模1.1定义与概念......
  • 数学建模系列(2/4):建模入门
    目录引言1.如何开始数学建模1.1选择和描述问题1.2提出基本假设1.3确定模型类型2.建模的数学基础2.1线性代数基础矩阵运算线性方程组的解法2.2微分方程基础常微分方程偏微分方程2.3统计与概率基础描述性统计概率基础3.模型的求解方法3.1解析法3.2......
  • Siemens NX(UG)2406系列(NX2406版本为例)安装教程(含安装包)
    软件介绍SiemensNX(前身为UnigraphicsNX,UGNX版本自12以后不再更新,改为SiemensNX以其他版本号进行更新。)是SiemensPLMSoftware公司出品的一个产品工程解决方案,它为用户的产品设计及加工过程提供了数字化造型和验证手段。SiemensNX针对用户的虚拟产品设计和工艺设计的......
  • 【 ARMv8/ARMv9 硬件加速系列 3.5.1 -- SVE 谓词寄存器有多少位?】
    文章目录SVE谓词寄存器(predicateregisters)简介SVE谓词寄存器的位数SVE谓词寄存器对向量寄存器的控制SVE谓词寄存器位数计算SVE谓词寄存器小结SVE谓词寄存器(predicateregisters)简介ARMv9的ScalableVectorExtension(SVE)引入了谓词寄存器(PredicateR......