1.涉及到的知识点
- socket
- https://www.cnblogs.com/dolphinX/p/3460545.html
- https://www.jianshu.com/p/066d99da7cbd
- Http,https,tcp, ip
- http:https://blog.csdn.net/qq_41517936/article/details/80886618
- Https:https://www.jianshu.com/p/14cd2c9d2cd2
- 长连接,短连接,心跳
2.学习记录
2.1 socket
1.是什么?
套接字,是在应用层和传输层的一个抽象层,把复杂的tcp/ip层操作抽象为几个简单的接口,供应用层使用,用于实现进程的网络通信。
2.工作模式
打开-读/写-关闭,基于unix的文件系统设计思路。是对文件的操作。
3.重要概念
服务端/客户端
- 服务端创建socket(socket()),为socket绑定ip地址和端口号(bind()),监听端口号请求(listen())。
- 客户端创建socket(socket()),根据服务器的ip地址和端口号尝试连接服务器的socket(connect())。
- 服务端收到客户的的socket请求,被动打开,还是接收客户端消息(accept()),处于阻塞状态,等到客户端返回值后才返回。
- 客户端连接成功,向服务端发送连接状态信息,accpet()方法结束,连接成功。
- 客户端向socke写入信息(send())。
- 服务端读取到消息(recv())。
- 客户端关闭(close())。
- 服务端关闭(close())。
2.2 http
1.是什么?
超文本传输协议,属于应用层协议。不状态的,不安全的。(状态采用Cookie实现,安全https)
2.重要概念
- 通信是如何实现的?
- 客户端发起请求,http请求。经DNS协议解析(域名解析)转为ip地址。请求体是逐层往下处理,经传输层、数据链路层、物理层,每经过一层会在请求体外增加一层,经过网络传输到达服务器后,再执行反向操作,还原为原请求体数据。
- URI介绍
- 是统一资源标识符。用于标记互联网资源。
- 格式
- http请求体和响应体,相关字段的含义及功能。
2.3 https
1.是什么?
是http协议的升级版,SSL/TLS用于保障传输的安全性。
一次https请求的过程包含2次http请求。
2.如何实现
请求的数据采用对称加密的方式进行(高效)。为了保障安全,将对称密钥进行非对称加密的方式传输给服务器,实现对数据的解密(安全)。
实现过程:
1.客户端发送https请求,连接到服务器的443端口。
2.服务端有一对密钥对,用于实现非对称加密。将公钥(又称数字证书)返回给客户端。
3.客户端收到公钥,验证公钥的合法性,合法则,本地生成随机数,作为私钥。然后用公钥对私钥进行加密。至此,第一次http请求完成。
4.客户端将加密后的私钥,发起第二次http请求,发送给服务端。
5.服务端收到加密后的数据后,先采用自己的私钥解密客户端的私钥,然后采用客户端的私钥加密数据,将密文返回给客户端。
6.客户端收到密文后,采用自己的私钥进行解密,获取到服务端的数据。至此第二次http请求结束。
2.4 tcp/ip
tcp/ip是协议集的名字,是包含tcp协议在内的一系列协议的统称。
osi7层网络模型,tcp对应的5层网络模型。自上而下是:应用层、传输层、网络层、数据链路层、物理层。
Tcp:网络层协议,三次握手,四次挥手。
Ip:网络地址,定义设备在网络中的地址。
网络协议举例:
- 应用层:http/ftp/Dns/Telnet/Snmp
- 传输层:TCP/UDP
- 网络层:IP/ICMP/IGMP/OSPF/EIGRP
- 数据链路层:SLIP/CSLP/PPP/MTU
2.5 长链接、短链接、心跳
长链接:网络建立连接后不断开,保持通路。心跳是tcp用于检查是否通路还在的方式。
短链接:网络请求完成后,即断开。