这也是开发者的入门基础,需要理解端口和协议,否则配置各种应用软件的时候,各种端口和通讯机制迷迷糊糊(包括端口冲突,修改端口,端口查看检查,应用服务端口异常占用,还有一些开发时候的端口技巧),很容易导致安装软件失败后,排查问题异常困难。俩操作系统之间需要通讯,是通过端口进行的。端口号范围 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传输数据的流程(理解这个,你就能理解你开发出来的数据,为什么是安全的)
- 客户端(如浏览器)和服务器在开始通信之前,首先进行密钥交换。服务器会向客户端发送其公钥。
- 服务器发送的公钥通常包含在SSL证书中。客户端会验证证书的有效性,包括证书是否由受信任的证书颁发机构签发,以及证书是否过期
- 一旦证书验证通过,客户端和服务器将使用公钥加密一个对称密钥,然后将这个对称密钥发送给服务器。由于对称密钥较短,因此可以快速加密和解密
- 服务器使用私钥解密接收到的对称密钥,然后客户端和服务器都将使用这个对称密钥来加密和解密它们之间的通信。
所以https传输状态下,即使攻击者拿到了你们之间的通讯数据,也是密文,是无法知晓其具体内容的,这导致https访问的安全性,不过由于每次涉及加密和解密,会导致性能上有点损耗。
理解 端口 协议 http https 这四个基础的概念,这样你对你开发出来的系统是怎样和客户端交互的,就能有个清晰的理解。
标签:协议,系列,端口,http,TCP,开发者,服务器,客户端 From: https://blog.csdn.net/weixin_43435138/article/details/139866471