web入门-UDP/TCP/HTTP/HTTPS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web入门-UDP/TCP/HTTP/HTTPS相关的知识,希望对你有一定的参考价值。

参考技术A (1).TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,按序到达;UDP尽最大努力交付,即不保证可靠交付。
(2)TCP连接只能是点到点的;
UDP支持一对一、一对多、多对一、多对多的交互通信。
(3)TCP的逻辑通信通道是全双工的可靠信道;
UDP的逻辑通信信道是不可靠信道。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

get:向服务器请求指定的资源
post:向服务器提交数据请求处理,数据被包含在请求体中
put:向服务器上传指定的数据
delete:向服务器发送请求删除指定数据
option:返回服务器对指定资源数据支持的HTTP请求方法,一般用于测试服务器功能的可用性
head:返回服务器上对指定资源数据的HTTP请求头,在不需要返回全部数据的情况
track:回显服务器收到的请求,主要进行功能测试判断
connect:HTTP1.1协议中预留请求方式,可以将连接 改为管道方式的代理服务器

(1)提交参数的位置不同:
get提交的数据会放在URL之后,以分割URL和传输数据,参数之间以&相连,如: htt://www.baidu.com/test?name=test&id=1234
post方法是把提交的数据放在HTTP包的Body中。
(2)提交参数的大小不同:
get提交的数据大小有限制(因为浏览器对URL的长度有限制),这点要根据实际情况而论,目前浏览器种类比较多,不同的浏览器大小 限制不同。
而post方法提交的数据理论上没有限制,但是建议不要太大
(3)安全问题上:
get方法提交数据,会带来安全问题,因为参数是裸露在地址栏上,所以较不安全。
而post方式参数在body中,所以安全性较高(注意:只是较高,不是很安全,在 http协议下,不管哪种提交方式,都是明码提交,只要有抓包工具,都能抓取数据的)
(4)是否浏览器可以收藏
get请求因为参数在地址栏上,因此可以收藏(因为参数可以保存)
而post请求不行,不能被浏览器收藏,因为参数无法被浏览器保存

计算机网络http,https,tcp,udp

一、HTTP

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

二、HTTPS

是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

三、https与http的区别

HTTP使用TCP三次握手建立连接,客户端和服务器需要交换3个包;HTTPS除了TCP的三个包,还要加上ssl握手需要的9个包,所以一共是12个包。

HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

HTTPS加密、加密、及验证过程(简单来说就是先公私钥加密,再根据私钥和内容进行对称加密)

1、客户端发起HTTPS请求
这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。
2、服务端的配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。
这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
3、传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
4、客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
5、传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6、服务段解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
7、传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
8、客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

四、TCP的三次握手

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:

技术分享     技术分享

建立连接:首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

断开连接:中断连接端可以是Client端,也可以是Server端。假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

TCP和UDP的区别

TCP协议可靠;UDP协议不可靠,尽最大努力交付

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

 

以上是关于web入门-UDP/TCP/HTTP/HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs发起http/TCP/UDP请求、串口通讯

网络通信时选择基于TCP/IP协议 还是 UDP/IP协议?

NodeJS编写简单TCP/UDP端口代理转发服务

认识nc,tcp/udp网络测试

TCP/IP -- 2

TCP/IP协议的端口号