-- 《计算机科学概论》 4.4
Internet Protocols
讲述了信息是如何在因特网上传输的。 通过什么软件来协作多设备信息传输的过程
The Layered Approach to Internet Software
软件通过网络连接的主要任务,是需要一个设备间传输数据的基础。 在互联网中,数据传输的活动是通过 不同的软件层 实现的。
就像给朋友邮寄礼物,你将礼物 包装好与邮寄地址 一并交给物流公司,物流公司将包裹通过不同的中转站发送到你朋友的家中。
网络中数据的传输,也是 不同层之间来回转发完成的,每一个层级都直接调用下一个层级的功能,而无需关心下一层的具体实现。 具体来说,互联网软件 有这四个层级: 应用层(Application) 传输层(Transport) 网络层(Network) 数据链路层(Data Link)
消息从应用层(Application)中产生,一路传递给网络层(Network)准备传输消息,由链路层(Link)传输给其他互联网软件,最终由目的地的链路层(Link)接收消息,并逐层向上返回给应用层(Application)
Application
应用层包含了使用互联网通信的客户端或服务端等,在传输消息前,需要提供一个互联网中的地址,这个过程可能需要使用互联网中的名称服务器(name server)来将记忆地址(域名)转化为IP地址,然后通过指定端口号传输给 传输层
Transport
传输层的任务专注于确认收到的消息格式,并对消息进行拆解或重组。 在将消息发送给网络层前,传输层会将消息拆分成多个片段并赋加序号,以便到达后根据序号重组,然后将数据包交给网络层继续数据的传输。
Network
网络层维护一张转发表,用来确定下一跳(物理意义上的位置),然后移交给数据链路层,将数据包通过互联网发送到指定的地点。 在网络层中,来自同一应用层的数据包将不再视作有关联的消息,而是独立的数据包,网络层只需要确认当前数据表是否到达的目的地,来决定要交给传输层,还是和下一跳一起返回给数据链路层。
Link
数据链路层负责转移数据包,细节处理通信过程(如给Ethernet传输时使用CSMA/CD 协议,CSMA/CA 给WIFI)当数据链路层收到数据包时,会交给网络层进行处理。
数据包在互联网传输的过程中,往往会经途多个中转站,数据包这些中转站中只经过网络层和数据链路层,而不会真正的有数据校验和重组行为(?)应当提及的是,现在互联网上充当转发角色的互联网软件,会将网络层确认下一跳的功能集成在数据链路层中,用来缩短数据传输的延迟。
当数据包到达目标的互联网软件后,网络层确认数据包已经到达了最终位置,并提交给传输层,传输层将数据包解包,并依照发送者附加的序号重组数据,当过程完成后,通过指定的端口号将完整的数据交给对应的应用层。(不同的协议会使用确定的端口号,如HTTP使用80,SMTP使用25)所以对于应用层而言,端口号也是正常接收数据所需要关心的。
Summary
应用层负责生产消息;传输层将信息分成多个兼容网络传输协议的数据包、将收到的信息依序重组并提交给对应的应用层;网络层确认数据包的下一跳(传输层/数据链路层/丢弃);数据链路层完成数据包的设备间转移。 通过这些行为,响应时间得以用毫秒计,并为不间断的互联网事务提供了条件。
The TCP/IP Protocol Suite
对公用网络的需求催生出了对公开标准的需求----硬件制造商和软件提供商都想从中分得一杯羹。 而其中的一个成果就是 OSI七层模型(open system interconnection) 由国际组织认证,概念清楚,理论完整,但由于模型本身的一些设计缺陷,和发布时 TCP/IP 已经在全球范围内得到了大规模应用,并未成功替代 TCP/IP四层模型。
TCP/IP 是一系列协议标准,用以在互联网上实现文初提及的四层模型。所以实际上,TCP/IP 并不仅仅指具体的两个协议,而是一系列协议和标准的总和。但此处仅对这两种协议 TCP
IP
进行介绍。
TCP
TCP(Transmission Control Protocol)是传输层所使用的协议之一,传输层可以有其他的版本如UDP(User Datagram Protocol),或者是TCP/IP中的其他实现方式,这是根据应用层决定的。 基于TCP的传输层在发送消息前会先告知目的地的TCP传输层,在确认能和对方建立连接后,才会开始传输数据包。 差异一:TCP需要建立连接后才会发送数据包,而UDP不考虑建立连接,直接将数据包发送到指定位置。所以UDP也被称为 无连接式协议(connectionless protocol) 差异二:TCP传输过程中,两端是共同合作,通过确认和重传保证数据完整性。所以在可靠性上TCP远大于UDP 差异三:TCP在传输过程中会通过 流控制 、阻塞控制 来减轻数据传输的压力。UDP的传输过程会比TCP显的更为 用力。 --------------------------- 然而此非证明UDP毫无用武之地,UDP传输过程中不用考虑确认和重传操作,传输过程更线性,没有额外的性能开销,在接受数据方有所准备的场景更具有效率,如:适用于DNS查找和推流
TCP 更可靠,但效率较低。 UDP 效率高,但不可靠。
IP
IP(Internet Protocol)是实现网络层的互联网标准。网络层的任务包括更新转发表和确认下一跳,IP标准中与路由相关的大部分内容都涉及相邻网络层之间在交换路由信息时所使用的协议。
IP网络层会在数据包末尾添加一个指定跳数(hop count),每当网络层将数据包转发时,就会将这个数减去1。通过这个机制来限定数据包在互联网中的转发次数,避免数据包滞留在互联网中,甚至出现转发回路。尽管现在的互联网在日益增长,被初始化为$2^6$的跳数已经足够数据包在ISP的众多路由中到达目的地了。
这些传输,路由和转发数据包的特性,加和在一起共同构成了互联网容错,给征途失意的数据包,有太多将军小道。
Comments NOTHING