0%

计算机网络

TCP/IP 协议栈

应用层:http,https,FTP,DNS 等
传输层:TCP,UDP
网络层:ICMP,ARP,RARP,IP
网络接入层:

常用端口:http:tcp:80,https:tcp:443,DNS:udp:53

TCP 与 UDP

TCP 是面向连接的全双工的可靠数据传输服务,UDP 是无连接的报文服务
为保证全双工,TCP 建立连接需要 3 次握手(SYN,SYN+ACK,ACK),4 次挥手(FIN,ACK,fin,ack)
socket,SOCK_STREAM 代表 TCP,SOCK_DGRAM 代表 UDP

http 和 https

http 数据是明文传输,https 是加密的
https 需要服务端安装证书
服务器收到客户端 https 请求后,会把证书公钥发给客户端
客户端利用公钥将密钥加密后发给服务器
服务器利用私钥解密得到密钥,然后利用密钥对数据解密后传输

服务器和客户端之间的数据需要密钥进行加密,但是协商密钥的过程有可能被窃取,所以通过证书的方式把密钥加密,保证密钥协商过程安全

IO 多路复用

五种 IO 模型

  1. 阻塞,调用 recvfrom 等,会被阻塞
  2. 非阻塞,无论数据是否准备好都立即返回,可以设置 socket 为非阻塞
  3. IO 多路复用,select(底层是数组),poll(底层是链表),epoll(底层是红黑树),可以等待多组数据
  4. 异步 IO,有 2 种,glibc 中通过创建工作线程实现异步 IO(aio_read 等函数),内核提供的(io_setup)