[关闭]
@Yano 2017-08-23T13:37:35.000000Z 字数 1257 阅读 2710

图解 TCP/IP

网络


网络基础知识

OSI 参考模型

如何模块化通信?

传输方式:面向有连接、面向无连接

各种设备及对应网络分层

移动通信

手机一开机,就会自动与距离最近的基站发生无线通信。基站上设有特定手机基站天线,基地本身相当于网络的“接入层”。

由一部手机终端发送信号给另一个终端时,它所发出的请求会一直传送到注册到对端手机号码的基站,如果对方接听了电话,就等于在这两部手机之间建立了通信连接。

在通话的过程中,手机相当于台式机,基站相当于路由器,“通信连接”相当于是TCP/IP,互相通话相当于双向传输数据。

IP 协议

IP(IPv4、IPv6)相当于OSI参考模型中的第3层——网络层。主要作用是:实现终端节点之间的通信

DNS

Domain Name System,将字符串转换为IP地址。

ARP

只要确定了IP地址,就可以向这个目标地址发送IP数据包。然而,在底层数据链路层,进行实际通信时需要每个IP地址所对应的MAC地址。

APR就是通过IP得知MAC地址。

ICMP

确认网络是否工作是否正常。命令:traceroute,ping。

DHCP

实现自动设置IP地址、统一管理IP地址分配(Dynamic Host Configuration Protocol)。

NAT

NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP的技术。

TCP

TCP 如何实现可靠性传输?

通过序列化和确认应答提高可靠性

TCP通过ACK(确认应答)实现可靠的传输。如果有确认应答,说明数据已经成功到达对端。反之,数据丢失的可能性很大。有两种情况:

数据未到达对端:

数据到达对端,但是应答丢失。对于目标主机来说,通过序列化来判断是否是重复数据。

连接管理

TCP 以段为单位发送数据

在建立TCP连接的同时,也可以确定发送数据包的单位,称为“最大消息长度”(MSS:Maximum Segment Size)。在三次握手时,在两端主机之间计算得出。

利用窗口控制提高速度

TCP以1个段为单位,每发一个段进行一次确认应答处理,有一个缺点:通信性能降低。如图发送5000的数据,需要来回往返4次。

为了解决这个问题,TCP引入了窗口的概念。即使在往返时间较长的情况下,它也能控制网络性能的下降。确认应答不再是以每个分段,而是以更大的单位进行确认,转发时间会被大幅缩短。

流控制

发送端根据自己的实际情况发送数据。但是,接收端可能在处理其他问题上花费一些时间。因此这个数据包可能被丢弃,会触发重发机制,从而导致网络流量的无端浪费。

为了防止这种现象的发生,TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量。

拥塞控制

有了TCP的窗口控制,收发主机之间即使不再以一个数据段为单位发送确认应答,也能够连续发送大量的数据包。但是,在通信刚开始时就发送大量数据,可能会引发其它问题。

为了防止该问题,在通信一开始会通过一个叫慢启动的算法得出数据,对发送数据量进行控制。

TCP 首部格式

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注