计算机网络基础

1.网络分层

在这里插入图片描述

2.三次握手四次挥手

三次握手基本原理

SYN:携带这个标志的包正在发起连接请求
FIN:携带这个标志的包正在请求终止连接

下图来自《Wireshark网络分析》"TCP的连接启蒙"部分(左图是wireshark启动relative sequence number的结果)
在这里插入图片描述

  • 一次握手:客户端发送带有SYN、Seq(序号)标志的数据包->服务端
  • 二次握手:服务端发送带有SYN、ACK(前面序号+1)、Seq(序号)标志的数据包->客户端
  • 三次握手:客户端发送带有ACK(前面序号+1)标志的数据包->服务端

为什么是三次,两次不行吗

两个也可以,但是不可靠。
假如客户端请求的第一个包跑到一条延迟严重的路径上,迟迟没有到达服务器,客户端就会当这个请求丢失了,会再请求一次,而这次非常顺利的到达了服务器且完成了工作关闭连接。这时,那条延迟的请求到达了,又会建立一次连接,但是这次连接没有任何用处。如果是三次握手的话,客户端收到服务器的回复时,知道这个连接不是它想要的,就发送一个拒绝包,服务器收到后也就放弃了这个连接。

在这里插入图片描述

四次挥手基本原理

参考大佬
在这里插入图片描述

  • 客户端:发送FIN、seq(前面数据的最后序号+1)到服务器,客户端进入FIN-WAIT-1(终止等待1)状态
  • 服务器:确认,发送ack(收到的seq+1)、seq,服务器进入CLOSE-WAIT(关闭等待状态)。
  • 客户端收到请求后,就进入FIN-WAIT2(终止等待2)状态,等待服务器发送释放报文
  • 服务器传输最后的数据
  • 服务器:服务器最后的数据发送完毕,关闭连接,发送FIN标志给客户端,服务器进入LAST-ACK(最后确认阶段)
  • 客户端:发回ACK确认

3.TCP与UDP的区别

  • TCP基于连接,建立连接需要三次握手,断开连接需要四次挥手,UDP不需要连接
  • TCP有流量控制和拥塞控制,UDP没有

4.输入一个url之后发生了什么

  1. DNS解析。浏览器通过DNS查找域名的IP地址(过程:浏览器缓存,路由器缓存,DNS缓存)。
  2. TCP连接。三次握手。
  3. 发送HTTP请求。
  4. 服务器处理请求并返回HTTP报文。
  5. 浏览器解析渲染页面。
  6. 连接结束。四次挥手。

使用到的协议:

  • DNS:获取域名的IP地址
  • TCP:建立TCP连接
  • IP:建立TCP协议时,需要发送数据,发送数据在网络层使用IP协议。
  • ARP:路由器在与服务器通信时,需要将IP地址转换为MAC地址,使用ARP协议。
  • HTTP:TCP建立完成后,使用HTTP协议访问网页。

5.常用状态码

2XX:成功
典型200 OK
3XX:重定向
4XX:客户端错误
典型404 Not Found
5XX:服务器错误
典型500 Internal Server Error

6.滑动窗口

本小节参考《网络是怎样连接的》2.3.5使用窗口有效管理ACK

常见包的传输方式,为一来一回,滑动窗口也就是让包一次传输好多个,加快传输效率。具体就是接受方存在一个接收缓冲区,在开始的时候,先向发送方声明缓冲区的大小,然后发送方开始传输,每次从缓冲区取走数据的时候,更新缓冲区大小告知发送方。为了减少传输,通常把ACK确认和窗口更新合并发送。
在这里插入图片描述

6.拥塞控制

本小节参考《Wireshark网络分析》“重传的讲究”。

发送窗口受接收窗口网络影响,其中限制得更严的因素起决定作用。当发送窗口由接收窗口决定的时候,可以通过"window size:"的值判断。如果由网络问题决定,就变得非常复杂。
网络之所以能限制发送窗口,是因为它一口气收太多数据就会拥塞,导致丢包。这个导致拥塞的数据量称为拥塞点,这个点根据网络的情况,有时堵有时空,是一个动态的值。

发送方会维持一个虚拟的拥塞窗口,使它尽可能接近真实的拥塞点:
在这里插入图片描述

  • 连接刚刚建立的时候,发送方对网络状态一无所知,发送窗口定的非常小。
  • 慢启动过程:如果发出去的包都得到确认,可以增大拥塞窗口(翻倍)。
  • 拥塞避免过程:慢启动持续一段时间后,拥塞窗口达到一个较大值,这时每个往返增加一个MSS。如果之前发生过拥塞,就把该拥塞点作为参考;如果没有就取最大接收窗口。

无论怎样,始终还是会达到拥塞点,这个时候就会发生重传,有两种重传方式。

  • 超时重传。当发出去的包没有得到确认时,暂停等待,这段时间什么也做不了,如果迟迟收不到,触发重传,这样对传输性能有严重影响,并且触发超时重传后,会重新调整临界窗口值(Richard Stevens在《TCP/IP Illustrated》中定为上次拥塞时发送窗口的一半),接下来的传输也慢多了。
    在这里插入图片描述
  • 快速重传。有时候拥塞很轻微,只有少量的包丢失,后续还有正常包到达。当后续的包到达接收方时,接收方发现其Seq号比期望的大,所以它每收到一个包就Ack一次期望的Seq号,以此提醒发送方重传。当发送方收到3个或以上重复确认时,就意识到相应的包丢失了,立刻重传它。快速重传不像超时重传需要等待一段时间,并且临界窗口值也没必要调整,接下来传慢一点就可以了。
    在这里插入图片描述
    为什么是三个及以上,因为网络包有时候会轻微乱序,为了乱序完全没有重传的必要。

相比之下,超时重传对性能影响最大,应尽量避免超时重传。

7.TCP如何保证可靠传输

  • 序列号与确认应答(Seq与ack)
  • 超时重传与快速重传
  • 连接管理(三次握手四次挥手)
  • 流量控制(通过滑动窗口机制,使接受窗口控制发送窗口)
  • 拥塞控制(拥塞窗口控制发送窗口)

8.cookie

HTTP是无状态协议,不对之前的请求和响应状态进行管理,这就意味着,要求登录认证的web页面每次跳转都会重新登录,cookie正是用于解决这类问题而存在的,
cookie技术通过在请求和响应报文中写入cookie的信息来控制客户端的状态,cookie会根据从服务器端发送的响应报文内的一个叫做set-cookie的首部字段信息,通知客户端保存cookie。当下次客户端再往服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。服务端发现客户端发送过来的cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,得到之前的状态信息。
图片来自《图解HTTP》
在这里插入图片描述

9.HTTPS

采用混合加密方式,在交换密匙环节使用公开密匙加密,之后的建立通信交换报文阶段则使用共享密匙加密方式。由于无法确定公开密匙是否来自目标,所以引入了数字认证机构(CA)。
首先服务器要向数字认证机构申请公匙证书,数字认证机构判明服务器的身份后,用自己的私有密匙部署数字签名并颁发公匙证书,连接的时候,服务器向客户端发送公匙证书,客户端拿到后,用数字认证机构的公开密匙解密数字签名,确认真实性,然后再使用服务器的公开密匙对报文(共享密匙)加密传输,服务器再用私有密匙对报文解密。之后的传输,都依靠共享密匙就行了。

与HTTP的区别

  • HTTPS默认端口443,HTTP默认使用端口80。
  • HTTP运行在TCP之上,所有传输的内容都是明文,客户端和服务端都无法验证对方身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上,所有传输内容都经过加密-混合加密。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 概述 问题1-1:“主机”和“计算机”一样不一样? 问题1-2:能否说:“电路交换和面向连接是等同的,而分组交换和无连接是等同的”? 问题1-3:因特网使用的IP协议是无连接的,因此其传输是不可靠的。这样容易使人们感到因特网很不可靠。那么为什么当初不把因特网的传输设计成为可靠的?在教材中1.2.1节提到这种新型计算机网络必须满足的要求有一条是“能够非常可靠地传送数据”。但因特网的网络层使用IP协议,它只能提供不可靠的数据传输。那么这里有没有什么矛盾? 问题1-4:在具有五层协议的体系结构中,如果下面的一层使用面向连接服务或无连接服务,那么在上面的一层是否也必须使用同样性质的服务呢?或者说,是否我们可以在各层任意使用面向连接服务或无连接服务呢? 问题1-5:在运输层应根据什么原则来确定应当使用面向连接服务还是无连接服务? 问题1-6:在数据链路层应根据什么原则来确定应当使用面向连接服务还是无连接服务? 问题1-7:TCP/IP的体系结构到底是四层还是五层? 问题1-8:我们常说“分组交换”。但又常说“路由器转发IP数据报”或“路由器转发帧”。究竟“分组”一词应当用在什么场合? 问题1-9:到商店购买可一个希捷公司生产的80 G的硬盘。安装到电脑上以后用WINDOWS的资源管理器发现在该磁盘的“属性”中只有74.5 G。是不是商店出了差错? 问题1-10:在教材的1.4.1节中有这样一段话:人们愿意将“带宽”作为数字信道的“数据率”的同义语。这样说有何根据? 问题1-11:有时可听到人们将“带宽为10 Mb/s的以太网”说成是“速率(或速度)为10 Mb/s的以太网”或“10兆速率(或速度)的以太网”。试问这样的说法正确否? 问题1-12:有人说,宽带信道相当于高速公路车道数目增多了,可以同时并行地跑更多数量的汽车。虽然汽车的时速并没有提高(这相当于比特在信道上的传播速率没有提高),但整个高速公路的运输能力却增多了,相当于能够传送更多数量的比特。这种比喻合适否? 问题1-13:如果用时延带宽积管道来比作传输链路,那么是否宽带链路对应的时延带宽积管道就比较宽呢? 问题1-14:网络的吞吐量与网络的时延有何关系? 问题1-15:什么是“无缝的”、“透明的”和“虚拟的”? 问题1-16:在教材的1.5.2节提到协议有三个要素,即语法、语义和同步。语义是否已经包括了同步的意思? 问题1-17:为什么协议不能设计成100%可靠的? 问题1-18:什么是因特网的穆尔定律? 问题1-19:局域网、广域网和公用网、专用网有什么关系? 问题1-20:信道的利用率是否越高越好? 问题1-21:怎样理解教材中图1-8所示的椭圆形表示的各种服务提供者?这些ISP都在具体的什么位置? 问题1-22:在计算机网络中的结点是指主机还是指路由器? 问题1-23:ISO与OSI有何不同? 问题1-24:我们常听说“要增加政府机构办事的透明度”。意思是:政府机关的许多办事程序和步骤应当向群众公开,让大家看得见。而计算机网络所讨论的透明传输,是指比特流看不见电路的存在。这样看来,两种“透明”的意思很不一样。应当怎样理解? 问题1-25:怎样才能知道哪些RFC文档已经成为因特网的正式标准(草案或建议标准)? 问题1-26:怎样知道一个RFC文档是否被改为陈旧的? 第2章 物理层 问题2-1:“规程”、“协议”和 “规约”都有何区别? 问题2-2:在许多文献中经常见到人们将“模拟”与“仿真”作为同义语。那么,“模拟信道”能否说成是“仿真信道”? 问题2-3:为什么电话信道的标准带宽是3.1 kHz? 问题2-4:奈氏准则和香农公式的主要区别是什么?这两个公式对数据通信的意义是什么? 问题2-5:传输媒体是物理层吗?传输媒体和物理层的主要区别是什么? 问题2-6:同步(synchronous)和异步(asynchronous)的区别是什么? 问题2-7:同步通信和异步通信的区别是什么? 问题2-8:比特同步和帧同步的区别是什么? 问题2-9:教材的表2-4的OC和STS有什么区别?例如OC-3和STS-3的数据率是一样的,为什么要使用两种表示方法?有的文献还使用如OC-3C的表示方法,这有区别吗? 问题2-10:ATM是异步传递方式。是否ATM方式与同步通信完全无关? 第3章 数据链路层 问题3-1:在1999年4月出版的《计算机网络》(第2版)的1.3.2节中有这样的话: “(2) 数据链路层 数据链路层的任务是在两个相邻结点间的线路上无差错地传送以帧(frame)为单位的数据。……这样,数据链路层就把一条有可能出差错的实际链路,转变成为让网络层向下看起来好像是一条不出差错的链路。” 但在2003年出版的《计算机网络》(第4版)中对数据链路层就改变了这种提法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值