TCP和UDP的区别
| TCP | UDP | |
|---|---|---|
| 是否面向连接 | 面向连接 | 面向无连接 |
| 传输可靠性 | 进行可靠传输 | 尽最大能力交付 |
| 传输形式 | 字节流 | 数据报文段 |
| 传输效率 | 慢 | 快 |
| 所需资源 | 多 | 少 |
| 首部字节 | 20-60 | 8 |
TCP如何实现可靠传输
大概说一下:
- 应用数据被分割成TCP认为最适合发送的数据块
- TCP利用
序列号和确认应答号保证数据的按序传输。 - 校验和:TCP首部的检验和会校验它首部和数据。如果在传输过程中发生变化,校验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
- TCP的接收端会丢弃
重复的数据。 - 流量控制:利用
滑动窗口实现流量控制,接收端会在报文中安放自己能接受的窗口大小,从而控制发送方的窗口大小,从而使发送方发送的数据接收方来得及接受。 - 拥塞控制:当网络拥塞时,
减少过多的数据注入到网络中。 - ARQ协议:也是为了实现可靠传输的,它的基本原理就是每发完⼀个分组就停⽌发送,等待对⽅确认。在收到确认后再发下⼀个分组。
HTTP长连接和短链接
短连接:HTTP/1.0使用的是短连接。CS每进行一次http操作后,任务结束之后就关闭连接。当需要的时候再重新打开一个新的连接。
长连接:HTTP/1.1使用的是长连接。当网页打开时,CS建立一次连接后,TCP连接不会关闭,当再次访问服务器的时候,可以沿用这个已经建立好连接的TCP连接。
什么时候使用长连接呢?
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况,每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,每次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
什么使用使用短连接?
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连接好。
HTTP和HTTPS的区别
-
端⼝ :HTTP的URL由“http://” 起始且默认使⽤端⼝
80,⽽HTTPS的URL由“ https://” 起始且默认使⽤端⼝443。 -
安全性和资源消耗:
HTTP协议运⾏在TCP之上,所有传输的内容都是明⽂,客户端和服务器端都⽆法验证对⽅的身份。HTTPS是运⾏在SSL/TLS之上的HTTP协议,SSL/TLS 运⾏在TCP之上。所有传输的内容都经过加密,加密采⽤对称加密,但对称加密的密钥⽤服务器⽅的证书进⾏了⾮对称加密。所以说,HTTP 安全性没有 HTTPS⾼,但是 HTTPS ⽐HTTP耗费更多服务器资源。- 对称加密:密钥只有⼀个,加密解密为同⼀个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
- ⾮对称加密:密钥成对出现(且根据公钥⽆法推知私钥,根据私钥也⽆法推知公钥),加密解密使⽤不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度慢,典型的⾮对称加密算法有RSA、DSA等。