计算机网络(计算机网络真的比我想的重要太多了)

计算机网络复习总结

网络模型

  1. 网络模型分为 OSI七层模型和TCP/IP四层模型。七层模型太复杂,四层模型太简单,所以学习是时候常用无层模型来代替。

HTTP比你想象的重要的多!!

  1. HTTP是什么
    HTTP的作用:规定了网络上信息传递的格式。只有大家统一了格式,那么才能进行有效的沟通。HTTP是不维护客户端的信息的!!!
  2. HTTP的工作流程
    1. 假设使用的是TCP协议。
    2. 服务器开放计算机80端口监听客户端的请求
    3. 客户端发起请求(简历TCP连接)
    4. 交换HTTP报文(客户端发送,服务器相应)
    5. 关闭TCP连接
  3. HTTP和HTTPS的区别
    1. 前面说到了HTTP只是规定了信息在网络上传递的格式,但是它并没有保证一个安全性。
    2. HTTPS底层是使用TCP来建立可靠传递的。HTTP的话还是可以使用UDP的呢
    3. HTTPS采用非对称加密和对称加密的方式,保证了信息在网络上流通的时候不是透明的。
  4. 对称加密和非对称加密
    1. 对称加密就是秘钥锁消息,秘钥解消息
    2. 非对称加密,服务器公布公钥,想要发送消息的客户端拿这个公钥锁消息,服务器还有秘钥解消息。
  5. HTTP1.0和HTTP1.1
    1. 加入了很多新的状态码比如100在请求大资源的时候会有一个预热
    2. 更新了缓存机制
    3. 连接方式从1.0的短连接变成了长连接
    4. 在请求头上加入了Host字段
  6. 长连接和短连接
    长连接和短连接是定义在TCP这个基础上的。在新的HTTP1.1中加入了字段 connect:keep-alive。这个定义之后,客户端和服务端消息发送完毕之后,这个TCP连接并不会断开,而会保持一段时间(举例Nginx中是75s)。短连接就直接断开了

websocket协议

websocket协议是相对于http协议的。它最核心的一点,它是双向的,全双工协议。什么意思举个例子
当我们要实现一个异步消息更新的时候,如果采用的是http,那可能就是定时通过js发起一个请求,从服务器拿回数据后渲染页面。而如果采用websocket就不一样,它是主动从服务器push数据到前端。

应用层常见的协议

  1. HTTP协议
  2. SMTP(简单邮件传输协议)
  3. FTP(文件传输协议)
  4. SSH(安全访问协议)

TCP

  • 三次握手的流程(建立)

    1. 第一次握手:客户端发送带有SYN标志的数据包,服务度确定客户端发送没有问题,自己接收没有问题。
    2. 第二次握手:服务端发送带有SYN/ACK的数据包,客户端确认自身发送没有问题,接收没有问题,确认服务端发送接收没有问题。服务度确定自身发送没有问题,接收没有问题。
    3. 第三次握手:客户端发送带有ACK标志的数据包,客户端确认自身发送接收真长,服务端发送接收正常,服务端确认自身发送接收正常,客户端发送接收正常。
      三次握手的目的是为了建立可靠的通信通道,说到通讯,简单来说就是数据的发送与接收而三次握手的 主最主要的目的就是双方确认自己与对方的发送与接收是正常的。其中SYN是为了告诉发送端,我接受到的信息确实是你发送的信号。
  • 四次握手(断开)

    1. 客户端发送FIN,关闭客户端到服务端的数据传送
    2. 服务器收到FIN,返回ACK确认。
    3. 服务端发送一个FIN给客户端
    4. 客户端返回一个ack
  • TCP安全传输

    • 校验和
    • 拥塞控制
    • 流量控制

为什么要四次握手,举一个很形象的例子,A和B打电话,A说完说我要结束了,B回答,我知道了。但是B可能还有话说,等B说,我说完了,A回答,知道了,这才算通话结束。

OSI七层模型

第一层:应用层,很多软件都会运行在这一层,比如qq wechat等等,这些软件页采取了不同的协议,比如www FTP等协议。主要定义软件之间交互的协议
第二层:表示层,这一层主要是数据的加工师,用于加密解密,把比特流翻译,压缩等。
第三层:会话层,为了表示层服务,有序的,安全的像表示层传递数据,会有一些校验点等问题。
第四层:传输层,负责端到端的通信在这一层,会有可靠传输,差错控制,流量控制,复用分用等功能。
第五层:网络层,很重要的一层,形成数据报,会有路由选择,流量控制,差错控制,拥塞控制等功能。
第六层:数据链路层,这一层就是把数据按组装成帧的形式传输
第七层:物理层,把比特转换成高低电平,还包括光缆等物理设备。

差错控制

起因:差错基本上都是由噪声引起的。
类型:1. 位错 2.帧错:丢失,重复,顺序颠倒
解决方案:校验码(奇偶校验码,循环冗余码),纠错码 海明码

流量控制

起因:当发送方和接收方速度不匹配的时候,就需要流量控制。因为会造成传输出错的问题。
解决方法:停止等待协议,滑动窗口协议

  1. 停止等待ARQ协议
    首先明确ARQ是自动重传请求协议,简单来说,发送方在一段时间没收到确认帧,就会重新发送消息。
    停止等待ARQ,发送一个帧,停止发送,等待对方确认,确认无误传送下一个帧。如果发送无误,接收方就会发送一个ack确认符号。如果发送有误,等待一个超时等待的时间(超时重传),发送方再次发送。
  2. 滑动窗口协议
    可以把停止等待协议理解为特殊的滑动窗口协议。
    介绍一下四个概念
    1. 发送窗口:发送方维护的工作集,只有当最头部的帧确收到确认消息后,才能向后滑动。
    2. 接受窗口:接收方维护的工作集,只有当最头部的帧接收到发送方传来的帧,才会向后滑动。
    3. ack:传递给发送方的确认信息。
    4. 备份:每次发送方发完一个消息,都会进行一个备份,防止超时重传。
      在这里插入图片描述
      只有允许发送的窗口中可以发送信息。
      不允许发送的窗口不允许发送
      接受窗口动了发送创口才能动
  3. 退后N帧协议
    发送方可以发送很多,但是接受方需要返回ack,发送方法到了5,但是只返回ack3,那说明 4 5全部丢失,需要退后重新发。

网络层

网络层的主要任务,就是把分组从远端传送到目的端。它会把数据切分,变化成数据报的格式。在这一层,他可以根绝算法选择路由,选择分组转发。

路由选择(路由选择算法)

  1. 静态路由算法,管理人员,人工配置(适用于较小的商业网络,对于大型的网络不适用)。
  2. 动态路由算法,路由器彼此之间交换信息,按照路由算法优化出路由表选项。RIP,OSPF都是其中经典的算法。
    1. RIP
      RIP的话维护的是所有网络信息,但是每一个路由器都仅仅和相邻的路由器交换信息,交换的是自己的路由表。但是出现故障会有死循环的可能,所以设置了最大传播率为15次。它只适合小型网络。
    2. OSPF:开放最短路径协议,底层是迪杰斯特拉算法。

拥塞控制

如果说流量控制是端到端的,那么拥塞控制就是对于全局的把握
慢开始与拥塞避免
慢开始:有一个发送的轮次,发送的报文段从1 2 4 8 16 然后达到一个阈值就会开始拥塞避免,变成16 17 18这样涨,遇到拥塞情况,且更新阈值为原来的一半

快重传与快恢复
快重传
当接受方,接收到一个失序的报文段,就会发送一个重复确认请求,接受方连续接受到3个,就会重新发送。
快恢复
他不是把把窗口设为1重新慢慢增加,而是设为阈值的一般
拥塞控制总有有4个点需要掌握

  1. 慢开始和拥塞避免组合。慢开始只是起点低,但是增长速度不慢,发送窗口变化为1,2,4,8…指数型上涨。当发送窗口达到规定的门限,就会变成拥塞避免算法,发送窗口的增加变成线性增加。一旦发送拥塞,就把门限放低成1,重新开始执行慢开始算法
  2. 快重传和快开始。快重传,当接收方收到一个无序的数据,就会发送重复确认请求,连续三个重复确认请求,就会重新传送数据。快开始是,遇到拥塞的情况,发送窗口变为原来的一半,而不是降为1

五层模型

OSI的七层模型太繁复了,而TCP/IP略显简单,所以这种选择了5层模型
应用层:同样,主要还是定义软件之间的互动协议。
运输层:主要任务是负责两台主机进程之间的通信,提供数据传输服务(TCP、UDP)
网络层:又称为IP层或者网际层,他主要负责选择合适的路由器,选择合适的交换节点,来保证数据报的传输。
数据链路层:把数据报分装成帧,专门的链路层协议,每一帧包括必要的控制信息。
物理层:实现相邻计算机节点的数据传输。

TCP是如何保证可靠传输的

  1. TCP会对包编号,有序发送
  2. 校验和
  3. TCP接收端会丢弃掉重复的数据
  4. 流量控制
  5. 拥塞控制
  6. 超时重传
  7. ARQ(停止等待协议)

在浏览器中输入url地址显示主页的过程

  1. DNS域名解析
    1. 连入互联网的计算机会被分配一个非权威的DNS服务器
    2. 现在解析一个域名,首先拿这个域名去这个非权威的DNS服务器上查找IP,如果有对应的IP就返回,如果没有,就会从配置文件中,返回13个根域名的服务器地址
    3. 向13台根域名服务器中的一台发起请求
    4. 根服务器拿到请求,会根据 com baidu www这样的顺序一遍一遍访问这个顶级域名服务器。
    5. 拿到IP之后就可以访问了。
  2. TCP连接
  3. 发送HTTP请求
  4. 服务器请求并返回HTTP报文
  5. 浏览器渲染页面
  6. TCP关闭连接

状态码

1xx 正在接受请求,正在处理
2xx 成功的状态码
3xx 重定向状态码
4xx 客户端出错出错
5xx 服务器出错

各种协议和HTTP协议之间的关系

  1. 首先客户端发起请求,这样需要DNS返回对应的IP地址
  2. HTTP协议在这个时候规定了报文如何发送等等
  3. TCP协议在这里将HTTP报文分割成好多段,然后可靠传输
  4. IP协议搜索对方地址一边中转一边传送
  5. 服务度用TCP协议解析
  6. 服务端用HTTP包裹返回报文重新返回过去

HTTP是如何用于保存用户状态的

session和cookie
session存在服务端,保密性高
cookie存在在客户端,保密性低。

URL和URI的区别

URL是一种具体的URI
URI是统一资源标志服,标识一个资源
URL是统一资源定位符,不光标识了一个资源还给了访问的路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值