客户端
int socket (int family ,int type ,int protocol)
int connect (int sockfd , const struct sockaddr *servaddr , socklen_t addrlen) // 自动绑定在了一个临时的端口上,并触发3次握手
int close (int sockfd);
服务器
int socket (int family ,int type ,int protocol)
int bind (int sockfd,const struct sockaddr *myaddr,socklen_t addrlen) // 绑定在一个众所周知的端口上
int listen(int sockfd, int backlog); // 把主动套接口转为被动套接口
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); // 阻塞,直到连接建立,返回一个连接套接字
int close (int sockfd);

参考:
Linux的TCP接口介绍
linux网络编程之二TCP套接口编程
由客户端调用connect函数触发,TCP的三次握手。

假设 A 为客户端,B 为服务器端。
首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。

第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。



1:解析网址,生成 HTTP 请求信息
2:根据 DNS 服务器查询真实请求的 IP 地址,如果本地服务器有缓存则直接返回
3:得到了 IP 以后,向服务器发送 TCP 连接,TCP 连接经过三次握手。
4:接受 TCP 报文后,对连接进行处理,对 HTTP 协议解析
5:服务器返回响应
6:浏览器接受响应,显示页面,渲染页面
HTTP(HyperText Transfer Protocol)和 HTTPS(HyperText Transfer Protocol Secure)是用于在客户端和服务器之间传输数据的协议,它们之间的主要区别在于安全性:
HTTPS增加了【证书认证+加密传输】
数据传输安全性:
HTTP:数据传输是明文的,不加密,容易被拦截和窃听。
HTTPS:数据传输通过 SSL/TLS 加密,保障数据的安全性和机密性,防止拦截和窃听。
协议和端口:
HTTP:使用的是 80 端口。
HTTPS:使用的是 443 端口。
证书和身份验证:
HTTP:不需要证书,不进行身份验证。
HTTPS:需要使用 SSL/TLS 证书,服务器端的证书用于验证服务器的身份,保证通信双方的身份和数据的完整性。
数据位置:
GET:数据附加在 URL 查询字符串中,例如:http://example.com/page?param1=value1¶m2=value2
POST:数据包含在请求的消息体中,不可见于 URL。
数据长度限制:
GET:由于数据附加在 URL 中,长度受限于 URL 长度限制,不适合传输大量数据。
POST:没有固定的数据长度限制,适合传输大量数据。
安全性:
GET:因为数据暴露在 URL 中,不适合传输敏感数据,如密码。
POST:数据在请求体中,更适合传输敏感数据。
可书签化:
GET:由于数据在 URL 中,可以被书签保存。
POST:不适合被书签保存,因为数据不在 URL 中。
幂等性:
GET:通常是幂等的,多次请求不会引起状态变化。
POST:不一定是幂等的,多次请求可能引起状态变化,比如向服务器提交表单。
浏览器行为:
GET:请求会被浏览器缓存,如果用户刷新页面,浏览器会直接使用缓存。
POST:浏览器不会缓存 POST 请求,刷新页面会重新发送请求。
用途:
GET:用于获取数据,不应该对服务器端数据产生副作用。
POST:用于提交数据,可以修改服务器端数据。
总的来说,GET 适合获取数据,而 POST 适合提交数据,根据具体的需求和情况选择合适的请求方法。
User
HTTP和HTTPS的区别
ChatGPT
HTTP(HyperText Transfer Protocol)和 HTTPS(HyperText Transfer Protocol Secure)是用于在客户端和服务器之间传输数据的协议,它们之间的主要区别在于安全性:
数据传输安全性:
HTTP:数据传输是明文的,不加密,容易被拦截和窃听。
HTTPS:数据传输通过 SSL/TLS 加密,保障数据的安全性和机密性,防止拦截和窃听。
协议和端口:
HTTP:使用的是 80 端口。
HTTPS:使用的是 443 端口。
证书和身份验证:
HTTP:不需要证书,不进行身份验证。
HTTPS:需要使用 SSL/TLS 证书,服务器端的证书用于验证服务器的身份,保证通信双方的身份和数据的完整性。
速度和性能:
HTTP:由于不需要加密和解密过程,通常比 HTTPS 更快一些。
HTTPS:由于加密和解密的过程,相对于 HTTP 会稍微慢一些。
SEO(搜索引擎优化):
HTTP:在搜索引擎中可能会受到一定的影响,因为搜索引擎越来越倾向于支持安全的网站。
HTTPS:在搜索引擎中有一定的优势,对于 SEO 有一定的好处。
总之,HTTPS 提供了更高的安全性和隐私保护,特别是在涉及用户隐私信息的网站上,使用 HTTPS 是非常重要的。