计算机网络

计算机网络

网络分层模型

OSI七层模型

TCP/IP四层模型
  • 应用层

    主要提供两个终端设备上应用程序之间信息交换的服务。

    常见协议:

    • HTTP(超文本传输协议)
    • SMTP(简单邮件发送协议)
    • POP3/IMAP(邮件接收协议)
    • FTP(文件传输协议):传输时不会对数据进行加密。建议SFTP
    • Telnet(远程登录协议)
    • SSH(安全的网络传输协议)
    • RTP(实时传输协议)
    • DNS(域名管理系统)
  • 传输层

    负责向两台终端设备进程之间的通信提供通用的数据传输服务。

    常见协议:

    • TCP(传输控制协议):提供 面向连接 的,可靠 的数据传输服务
    • UDP(用户数据协议):提供 无连接 的,尽最大努力 的数据传输服务(不保证数据传输的可靠性),简单高效
  • 网络层

    负责为分组交换网上的不同主机提供通信服务

    常见协议:

    • IP(网际协议)
    • ARP(地址解析协议):解决了IP地址转MAC地址的一些问题
    • ICMP(互联网控制报文协议)
  • 网络接口层

    可以把网络接口层看做是数据链路层和物理层的合体

    • 数据链路层

      • 封装成帧
      • 透明传输
      • 可靠传输
      • 差错检验(CRC)
    • 物理层

      负责0、1比特流与电压的高低之间的转换

    常见协议:

    • PPP(点对点协议)
    • Ethernet(以太网)
    • MAC协议

HTTP协议特点

  • 基于请求-响应模式。请求从客户端发出,最后服务器端响应该请求并返回HTTP报文
  • 无连接。无连接指限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接
  • 无状态。HTTP协议不保存请求、响应,不作持久化处理。(可用cookie保存)

从输入URL到页面展示的过程(HTTP工作流程)

  1. DNS解析 :获取域名对应的IP地址
  2. 建立 TCP连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束,关闭TCP连接

HTTP与HTTPS的区别

  • 端口号

    HTTP默认80,HTTPS默认443

  • URL前缀

    HTTP的URL前缀是https://,HTTPS的前缀是https://

  • 安全性和资源消耗

    HTTP安全性没有HTTPS高(HTTPS传输的内容进行了加密),但HTTPS比HTTP耗费更多服务器资源

  • 搜索引擎优化

    搜索引擎更青睐使用HTTPS协议的网站

HTTP状态码

  • 1xx:请求正在处理
  • 2xx: 请求成功响应
    • 200:成功响应
    • 201:请求成功创建
    • 204:成功响应,但无内容
  • 3xx: 重定向消息
  • 4xx: 客户端错误
    • 400:错误请求
    • 401:未授权
    • 403:禁止访问
    • 404:页面未找到
  • 5xx: 服务器错误
    • 500:服务器内部错误
    • 502:网关错误
    • 503:服务不可用

cookie和session的区别

  • cookie将数据保存在客户端
  • session将数据保存在服务端,安全性更高

GET和POST的区别

  • GET通常用于获取或查询资源,POST通常用于创建或修改资源
  • GET请求多次重复执行不会改变资源状态,POST请求每次执行都可能产生不同的结果或影响资源状态
  • GET请求的参数通常放在URL中,POST请求的参数同在放在请求体(body)中,Get的安全性没有POST高

PUT在多次请求时,产生和单次请求同样的效果,即没有产生新的资源。

举例来说,当你在编辑博客时,后台提供了一个API:test.如果你发送n次test请求,后台始终都只产生了一篇文章,说明前面的请求被覆盖了,那么这个test在多次请求中没有副作用,则它使用的应该是幂等方法Put.如果n次请求后,后台产生了n篇文章,那么test则是非幂等方法。

DNS :域名管理系统,解决域名和IP地址的映射问题

DNS是应用层协议,可以在TCP、UDP协议之上运行,端口为53

DNS服务器的类别
  • 根DNS服务器 : 提供顶级域DNS服务器,目前世界上只有 13 组根服务器,我国境内目前仍没有根服务器。
  • 顶级域DNS服务器: 顶级域是指域名的后缀,如comorgnetedu
  • 权威DNS服务器
  • 本地DNS服务器

TCP与UDP(传输层)

TCP与UDP的区别
TCP UDP
是否面向连接
是否可靠
是否有状态
传输效率 较慢 较快
传输形式 字节流 数据报文段
首部开销 20 ~ 60 bytes 8 bytes
是否提供广播或多播服务
TCP与UDP的应用场景
  • TCP用于对传输准确性要求特别高的场景,如文件传输、发送和接收邮件、远程登录等。
  • UDP一般用于即时通信,如语音、视频等
运行在TCP协议上的协议
  • HTTP协议
  • HTTPS协议
  • FTP协议
  • SMTP协议
  • POP3/IMAP协议
  • Telnet协议
  • SSH协议
运行在UDP协议上的协议
  • DNS :将域名转换为IP地址
  • DHCP协议:动态主机配置协议,动态配置ip地址

TCP三次握手和四次挥手

建立连接——TCP三次握手

一次握手:客户端发送带有 SYN(SEQ=x) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务器的确认;

二次握手:服务端发送带有 SYN+ACK(SEQ=y,ACK=x+1) 标志的数据包 –> 客户端,然后服务端进入 SYN_RECV 状态

三次握手:客户端发送带有 ACK(ACK=y+1) 标志的数据包 –> 服务端,然后客户端和服务器端都进入ESTABLISHED 状态,完成 TCP 三次握手。

三次握手的目的

让双方确认自己与对方的发送与接收是正常的

  1. 第一次握手:服务端确认了对方发送正常,自己接收正常

  2. 第二次握手:客户端确认自己和对方发送、接收正常,服务器确认对方发送正常,自己接收正常

  3. 第三次握手:客户端确认自己和对方发送、接收正常,服务端确认自己和对方发送、接收正常

断开连接——TCP四次挥手

  1. 第一次挥手: 客户端发送一个FIN(SEQ=x)标志给服务端,用来关闭客户端到服务器的数据传送,然后客户端进入FIN_WAIT-1状态
  2. 第二次挥手:服务器收到这个FIN(SEQ=x)标志的数据包,他发送一个ACK(ACK=x+1)标志的数据包给客户端,然后服务端进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态
  3. 第三次挥手:服务器发送一个FIN(SEQ=y)标志的数据包给客户端,然后服务端进入LAST_ACK状态。
  4. 第四次挥手:客户端发送 ACK (ACK=y+1)标志的数据包->服务端,然后客户端进入TIME-WAIT状态,服务端在收到 ACK (ACK=y+1)标志的数据包后进入 CLOSE 状态。此时如果客户端等待 2MSL 后依然没有收到回复,就证明服务端已正常关闭,随后客户端也可以关闭连接了。

TCP传输可靠性保障

  • 基于数据块传输
  • 对失序数据包重新排序以及去重
  • 校验和
  • 超时重传
  • 流量控制:使用滑动窗口来控制
  • 拥塞控制
TCP的拥塞控制采用的算法
  • 慢开始
  • 拥塞避免
  • 快重传与快恢复

相关推荐

  1. 计算机网络

    2023-12-06 10:04:05       53 阅读
  2. 计算机网络

    2023-12-06 10:04:05       50 阅读
  3. 计算机网络

    2023-12-06 10:04:05       56 阅读
  4. 计算机网络

    2023-12-06 10:04:05       67 阅读
  5. 计算机网络

    2023-12-06 10:04:05       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 10:04:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 10:04:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 10:04:05       82 阅读
  4. Python语言-面向对象

    2023-12-06 10:04:05       91 阅读

热门阅读

  1. 软件测试面试真题 | 什么是PO设计模式?

    2023-12-06 10:04:05       57 阅读
  2. 汇编:常用的输入与输出

    2023-12-06 10:04:05       60 阅读
  3. MySQL的事务

    2023-12-06 10:04:05       60 阅读
  4. C#结构体应用实例

    2023-12-06 10:04:05       57 阅读
  5. day7 四数之和为x

    2023-12-06 10:04:05       45 阅读
  6. Frida抓包flutter app过程记录

    2023-12-06 10:04:05       58 阅读
  7. uniapp的subnvue苹果适配(ios)谷歌地图问题

    2023-12-06 10:04:05       47 阅读
  8. 【重点】Flink四大基石

    2023-12-06 10:04:05       68 阅读
  9. RK356x U-Boot研究所(命令篇)3.12 mtd命令的用法

    2023-12-06 10:04:05       57 阅读
  10. C#-并行编程的概念及其运用

    2023-12-06 10:04:05       68 阅读