TCP/IP协议之http与https通论

简介: TCP/IP协议之http与https通论TCP/IP是传输层协议, http是应用层协议。web使用http协议作应用层协议,封装http明文数据,然后使用tcp/ip做传输层协议将它通过网络传输。
TCP/IP协议之http与https通论


TCP/IP是传输层协议, http是应用层协议。web使用http协议作应用层协议,封装http明文数据,然后使用tcp/ip做传输层协议将它通过网络传输。http协议以明文方式传输内容,不提供数据加密。https,安全套接字层超文本传输协议。https在http的基础上加入ssl(secure sockets layer 安全套接层)协议,ssl依靠证书来验证服务器的身份,并为客户端(client)和服务器(server)之间的通信加密。https是http下加入ssl层,https的安全基础是ssl。http直接用tcp进行数据传输,而https经过一层ssl,用的端口不一样,http是80,https是443。
https协议服务器须有数字证书,可以是自己制作或者ca(certificate authority)证书。自己颁发的证书需要客户端验证通过,才可以继续访问,使用ca证书则不会弹提提示窗。这套证书是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。公钥含了很多公开信息,如证书颁发机构,过期时间等。
客户使用https的url访问服务器,要求与web服务器建立ssl连接。客户端收到服务端证书后首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出窗警告,提示证书存在问题。如果证书没有问题,那么就生成一个随即值,然后用证书对该随机值进行加密。
客户端发给服务器端加密后的随机值,让服务端得到这个随机值,随后客户端和服务器端的通信就以这个随机值来加密解密。服务器端用私钥解密后,得到客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。对称加密是将信息和私钥通过某种算法混合在一起,除非知道私钥,否则无法获取明文内容,而恰好客户端和服务器端都知晓此私钥,所以只要加密算法足够复杂和精巧,数据就够安全。此后,服务器端传输给客户端的信息,是服务器端用私钥加密后的信息,客户端可解密还原。
https协议的作用有二:
一,建立信息安全通道,来保证数据传输的安全;
二,确认服务器的合法性。服务器端从http切换到https需要把url链接由http改为https。作为兼容性考虑,一般服务器端支持http和http两种。https是现行架构下相对安全的解决方案,虽然不是绝对安全,但它大幅度增加了中间人攻击的成本。但是https协议握手阶段比较费时,https协议需要ca申请证书或自制证书,会使数据的加载时延变长。https缓存不如http高效,会增加额外开销和能耗。
http是明文传输,https报文组装成tcp报文时加密,https的header,以及body都被加密。https使用加密与hash算法:
对称加密算法:aes,rc4,3des。对称加密(encryption)与解密(decryption)用的是同样的密钥(secret key),对称加密优点是快、简单,效率高。
非对称加密算法:rsa,dsa/dss。非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。最常用的非对称加密算法是RSA算法。
hash算法:md5,sha1,sha256。
相关文章
|
17天前
|
网络协议 Linux iOS开发
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
38 1
|
1天前
|
网络协议 Linux Windows
TCP/IP、Http、Socket之间的区别
TCP/IP、Http、Socket之间的区别
|
1天前
|
数据采集 Python
数据采集时使用HTTP代理IP效率不高怎么办?
数据采集时使用HTTP代理IP效率不高怎么办?
|
1天前
|
缓存 网络协议
【计算机协议】第一章——HTTP协议详解
【计算机协议】第一章——HTTP协议详解
|
2天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
3天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
5 0
|
5天前
|
缓存 安全 网络协议
Http协议是什么
【4月更文挑战第12天】HTTP是用于从WWW服务器传输超文本到浏览器的协议,基于TCP/IP,特点包括无连接、无状态、面向对象、无阻塞和可缓存。它的工作原理是客户端发送请求,服务器处理后返回响应。自1989年创建以来,HTTP已发展支持多媒体内容传输,并通过HTTPS提供安全保护。学习更多可参考计算机网络技术文献。
15 6
|
6天前
|
缓存 安全 网络协议
【面试必备】HTTP和HTTPS是什么?有什么差异?
HTTP(超文本传输协议)和HTTPS(超文本传输安全协议)是用于在互联网上传输数据的协议。它们都是应用层协议,建立在TCP/IP协议栈之上,用于客户端(如浏览器)和服务器之间的通信。
12 2
|
7天前
|
存储 JSON 前端开发
网络原理(4)HTTP协议(下)
网络原理(4)HTTP协议
20 0
|
17天前
|
XML JSON JavaScript
推荐一个比较好用的c++版本http协议库-cpp-httplib
推荐一个比较好用的c++版本http协议库-cpp-httplib
36 1