杰森：在本课中,
我们将讨论IP协议类型,
包括TCP､ UDP以及无连接方法和面向连接方法的概念｡
什么是TCP？
TCP是一种传输控制协议｡
它是一种面向连接的协议,
这意味着它是在我们的网络中传输数据段的可靠方式｡
现在, 如果一个数据段被丢弃,
协议实际上每次都会要求确认｡
如果它没有得到确认,
它将重新发送这条信息｡
这就是为什么我们称之为全连接协议, 因为它具有这种双向类型的信息,
我向您发送信息, 我通过收听您收到的信息来验证您是否确实收到了它, 然后您给我一个响应｡
现在让我们看一下屏幕上的这个小图表｡
您将看到我在左边有一个客户端,
在右边有一个服务器｡
现在, 客户端将向服务器发送所谓的syn数据包,
或同步数据包｡
现在, 当服务器得到这个消息时,
它将向客户端发回一个同步确认,
称为syn ack｡
现在, 当客户端收到确认时,
它将向服务器发回自己的确认｡
这被称为ACK｡
现在, 当我们这样做syn, syn ack,
ack时, 这就是我们所说的三次握手｡
从本质上讲, 这是客户端去,
“嘿, 服务器, 你准备好得到一些信息？ ”服务员说：“当然｡
为什么不呢？
“给我发点资料｡ 客户说, “好吧,
来了｡ 然后传输就要开始了, 因为我们已经建立了三次握手,
我们知道双方都准备好了进行通信｡
“现在, 你准备好了吗？ “是的,
我是｡ “来了｡
现在,
每次通过网络发送这些数据（我们称之为数据段）时,
都会收到一个确认消息, 告诉我们双向通信成功｡
现在, 如果这个服务器期望得到100条信息,
但它只得到了其中的98条,
它会对客户端说, “嘿, 你告诉我你要给我发送100条信息,
“但你只给我发送了98条｡
“把我缺少的那两样东西送过来｡ 然后, 发生重传｡
通过这种方式,
通信可以为我们进行, 我们可以始终确保我们得到了我们应该得到的,
因为我们可以通过网络重新发送数据包｡
现在, 它用于所有需要确保到达其最终目的地的网络数据｡
我喜欢把它想象成挂号信｡
例如, 如果我想给国税局发一条信息, 我想确保他们收到了,
而且不会在邮件中丢失｡
所以我可能会多付一点钱, 得到一个认证的收据,
当它到达那里, 他们必须签署它,
并被邮寄回我｡
这样, 当我拿回收据时,
我就知道国税局收到了我的邮包｡
这就是TCP的工作方式｡
现在, 另一方面,
我们有另一个称为UDP的协议｡
UDP是我们所说的无连接协议,
这意味着它不必等待连接｡
UDP是User Datagram Protocol的缩写｡
我们之所以称之为数据报,
是因为如果你使用UDP, 你就使用了这种类型的数据｡
它叫做数据报｡
现在, 当我们谈论UDP时,
UDP是不可靠的, 它传输称为数据报的段｡
如果它们被丢弃了,
发送者永远不会知道它发生了｡
为什么我要把东西寄到发件人不知道的地方,
我也没有收到任何收据？
UDP非常适合音频和视频流, 因为您发送大量数据,
并且使用UDP时的开销要少得多,
因为我们没有恒定的三次握手来建立它, 并且我们没有使用TCP相关的所有检查和平衡｡
因此, 通过使用UDP,
您可以真正提高网络的性能,
因为您将有零重传｡
你最后只会泄露信息
这不是坏事吗
我们为什么要放弃信息？
对某些应用来说,
这并不重要｡
例如, 您正在播放此视频｡
如果我消失了1/100秒, 你会注意到吗？
嗯, 你可能不会, 这就是为什么UDP如此好,
因为我们可以在这里丢弃1/100的时间, 你真的永远不会注意到它, 而且不会有重新传输｡
但是使用TCP, 这将导致更多的缓冲,
因为你必须等待, 然后让它重新发送给你,
然后把它放在正确的地方, 然后播放它｡
因此, 由于这种确认和开销,
对于这个视频的每一秒,
它最终会使它变得更大,
并使用更多的带宽｡
这就是我们使用UDP进行视频流和音频流的重要原因之一｡
现在, 让我们快速总结一下TCP和UDP｡
因为这是一个非常非常重要的概念｡
事实上, 如果你现在有笔记, 我会写下这个图表,
我现在要告诉你, 因为我们谈论TCP和UDP｡
因为这真的很重要｡
首先, TCP是可靠的, 它有三次握手,
而UDP不是很可靠｡
这是一个不可靠的协议,
因为没有三次握手｡
TCP是我们所说的面向连接或完全连接的协议,
因为我们在应答中有三次握手,
但UDP是无连接的｡
这是一个火和忘记的方法｡
我只是开始发送信息,
希望你能得到它｡
TCP使用段重传和通过窗口处理的流量控制｡
另一方面, UDP没有重传,
也没有窗口｡
使用TCP,
我们对所有不同的段进行了分段｡
使用UDP, 没有排序｡
这意味着, 当我把所有的东西都发送出去的时候,
我会按照正确的顺序, 从1到100发送出去｡
我将对TCP和UDP都这样做｡
现在, 如果你错过了其中的一些片段,
或者它们以不同的顺序到达,
因为它们在网络上采取了不同的路径,
使用TCP, 它们会排序, 所以它知道你有1到1000, 它会把它们放回正确的顺序｡
使用UDP, 无论它们以什么形式进来,
这就是它将如何广播它｡
所以, 它可以是1,
50, 2, 500,
3, 4, 5, 6,
20, 以任何随机的顺序｡
你就得这么听｡
对于视频, 你可能会听到一点跳动,
或者一点尖锐的尖叫声,
或者类似的声音,
因为其中一帧可能出了问题｡
现在, 当我们回到TCP时,
它将确认每个数据段｡
所以我们有了认知｡
如果我没有得到它,
我知道我没有得到它,
我可以让它重新传输给我, 然后再得到它｡
使用UDP, 没有确认｡
同样, UDP的开销要少得多,
因为它没有连接､
没有窗口､ 没有重传､ 没有排序和没有确认｡
现在, 如果你必须得到一些东西,
你想确保这个人得到了它, 你真的必须使用TCP作为你选择的协议｡
这就是为什么我们真的要把TCP用于银行､
网站和电子商务等领域｡
但是, 如果我们有很多数据, 比如音频或视频流,
UDP确实可以很好地处理,
因为我们不需要获取该文件的每一部分｡
我们可以在这里和那里跳过一点,
这没关系｡
- ：现在, 当谈到TCP和UDP时,
我们谈到了这两种协议是全连接或面向连接的协议, 以及无连接协议｡
让我给你们举几个使用TCP或UDP协议的例子,
这样你们就能理解为什么我们要使用每一种协议｡
首先, 让我们看看TCP和我们的面向连接或全连接协议｡
这包括SSH､ HTTP或HTTPS｡
那么, 为什么我们在这些情况下需要面向连接呢？
好吧, 在使用SSH之类的东西的情况下,
我正在进行双向通信和远程服务器或远程工作站的控制,
并且能够通过端口22来实现｡
我想确保我是以一种面向连接或完全连接的方式这样做的｡
这样, 当我发出一个命令并说, 重新启动服务器时,
我知道该命令实际上到达了那里,
服务器将重新启动｡
类似地, 当我们处理HTTPS时,
我们希望确保我们使用TCP的是完全连接或面向连接的协议｡
这样做的原因是,
我们想确保我们发送的信息确实被接收到了｡
这可能包括我们试图使用用户名和密码登录网站时的身份验证,
或者可能是我们从该网站获取的信息, 例如我们的帐户余额和银行信息｡
现在, 另一方面,
如果我们使用UDP作为我们的协议,
我们是在一个无连接的方式处理｡
现在, 我已经提到了一个事实,
我们一直在使用它来处理音频和视频流｡
但除此之外,
我们还将其用于DHCP和普通文件传输协议（称为TFTP）等｡
现在, 如果你还记得,
DHCP被用作动态主机控制协议, 它在端口67和68上运行｡
现在, 当您加入网络时,
如果您的设备设置为动态分配其IP地址, 则会在该网络上发送广播消息, 以查找DHCP服务器｡
这就是为什么我们把它用作无连接协议｡
因为如果信息被发送出去而没有人回应, 你的客户会简单地再次发送,
希望其他人会在那里｡
这就是DHCP的工作原理｡
它会允许广播消息出去,
然后等待响应回来｡
如果在一定的时间内没有得到响应,
它将简单地重新广播它的消息,
并再次寻找新的DHCP服务器｡
现在, 类似地, 当我们有TFTP或简单文件传输协议时,
它在端口69上运行, 它将以无连接的方式使用UDP作为其传输｡
这样做的原因是因为TFTP是简单的文件传输协议,
因此, 我们不需要保证每个数据包都是通过这些确认发送和接收的, 如果我们使用TCP, 这会产生更多的开销｡
因此, 通过使用UDP,
当我们使用TFTP之类的协议时,
我们可以更快地传输文件, 而不是使用更多的连接完整协议,
如FTP｡