了解最新公司动态及行业资讯
TCP/IP是指传输控制协议/因特网协议,它是一组用于实现互联网通信的协议。TCP/IP协议由两个部分组成,其中TCP(传输控制协议)提供了可靠的数据传输,而IP(因特网协议)则负责在不同的网络之间进行路由和转发。
TCP/IP协议在互联网中被广泛使用,它将整个互联网分成了多个网络,每个网络都有一个唯一的IP地址来标识。通过TCP协议的连接,可以在不同的计算机之间传输数据,而IP协议则可以确保数据可以正确地到达目的地。
TCP/IP协议具有以下优点:
可靠性:TCP协议提供了可靠的数据传输,确保数据能够正确地到达目的地,而且可以检测和纠正错误。灵活性:TCP/IP协议是开放式协议,可以被任何人使用和扩展,因此可以适应不同的网络环境和应用场景。全球性:TCP/IP协议被广泛应用于全球范围内的互联网中,因此可以在不同地区和不同网络之间进行通信。易于管理:TCP/IP协议是基于分层结构的,每层负责不同的功能,因此易于管理和维护。由于TCP/IP协议具有以上优点,因此它已成为互联网通信的标准协议,并且在日常生活中被广泛应用,如电子邮件、网页浏览、文件传输等。
应用层
最上层的,也是我们能直接接触到的就是应用层(Application Layer),我们电脑或手机使用的应用软件都是在应用层实现。应用层定义了任何用户均可使用的标准 Internet 服务和网络应用程序。这些服务与传输层协同工作以发送和接收数据。存在多种应用层协议。
所以,应用层只需要专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。
传输层
应用层的数据包会传给传输层,传输层(Transport Layer)是为应用层提供网络支持的。
在传输层会有两个传输协议,分别是 TCP 和 UDP。
TCP 的全称叫传输控制协议(Transmission Control Protocol),大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议。TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。使用 TCP,应用程序可以像通过实际线路连接一样进行相互通信。TCP 发送数据的形式类似于逐个字符进行传送,而不是以独立的包进行发送。这种传输由以下各项组成:
起始点,用于打开连接按字节顺序进行的完整传输结束点,用于关闭连接。TCP 会向传送的数据中附加一个头。此头包含许多参数,可帮助发送系统上的进程连接到接收系统上的对等进程。TCP头部格式如下图
TCP头部格式
TCP 通过在发送主机和接收主机之间建立端对端连接,确认包是否已到达其目的地。因此,TCP 被视为一种“可靠的、面向连接的”协议。
UDP 相对来说就很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率也高。当然,UDP 也可以实现可靠传输,把 TCP 的特性在应用层上实现就可以,不过要实现一个商用的可靠 UDP 传输协议,也不是一件简单的事情。
网络层
负责为分组网络中的不同主机提供通信服务,并通过选择合适的路由将数据传递到目标主机。在发送数据时,网络层把运输层产生的报文段或用户数据封装成分组或包进行传送。
网络层的功能类似于我们日常生活中的快递服务。包裹可能经过很多个中转站才到达我们的手上,我们不需要关心包裹经过了哪些中转站,只关心包裹是否能准确的到达我们的手上。
实际场景中的网络环节是错综复杂的,中间有各种各样的线路和分叉路口,如果一个设备的数据要传输给另一个设备,就需要在各种各样的路径和节点进行选择,而传输层的设计理念是简单、高效、专注,如果传输层还负责这一块功能就有点违背设计原则了。
也就是说,我们不希望传输层协议处理太多的事情,只需要服务好应用即可,让其作为应用间数据传输的媒介,帮助实现应用到应用的通信,而实际的传输功能就交给下一层,也就是网络层(Internet Layer)。
网络层最常使用的是 IP 协议(Internet Protocol),IP 协议会将传输层的报文作为数据部分,再加上 IP 包头组装成 IP 报文,如果 IP 报文大小超过 MTU(以太网中一般为 1500 字节)就会再次进行分片,得到一个即将发送到网络的 IP 报文。
网络层负责将数据从一个设备传输到另一个设备,世界上那么多设备,又该如何找到对方呢?因此,网络层需要有区分设备的编号。
需要将 IP 地址分成两种意义:
一个是网络号,负责标识该 IP 地址是属于哪个「子网」的;一个是主机号,负责标识同一「子网」下的不同主机;网络接口层
生成了 IP 头部之后,接下来要交给网络接口层(Link Layer)在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上。
IP 头部中的接收方 IP 地址表示网络包的目的地,通过这个地址我们就可以判断要将包发到哪里,但在以太网的世界中,这个思路是行不通的。
什么是以太网呢?电脑上的以太网接口,Wi-Fi接口,以太网交换机、路由器上的千兆,万兆以太网口,还有网线,它们都是以太网的组成部分。以太网就是一种在「局域网」内,把附近的设备连接起来,使它们之间可以进行通讯的技术。
以太网在判断网络包目的地时和 IP 的方式不同,因此必须采用相匹配的方式才能在以太网中将包发往目的地,而 MAC 头部就是干这个用的,所以,在以太网进行通讯要用到 MAC 地址。
MAC 头部是以太网使用的头部,它包含了接收方和发送方的 MAC 地址等信息,我们可以通过 ARP 协议获取对方的 MAC 地址。
所以说,网络接口层主要为网络层提供「链路级别」传输的服务,负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备
综上所述,TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。
网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet)TCP 层的传输单位是段(segment)HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。