TCP/IP协议

TCP/IP协议

TCP/IP 协 议 是 Internet 各 种 协 议 中 最 基 本 的 协 议,也是最重要和最著名的两个协议,即传输控制协议 TCP(Transmission Control Protocol) 和 网 际 协 议 IP(Internet Protocol),简单的说,就是主要由底层的 IP 协议和 TCP 协议组成。因此,我们经常提到的 TCP/IP 并不一定是指 TCP和 IP 这两个协议,而往往是指 Internet 所使用的体系结构或是指整个的 TCP/IP 协议族。
在这里插入图片描述

TCP/IP 参考模型

TCP/IP 协议将 Internet 分为五个层次,也称为互联分层网模型或互联网分层参考模型。这五个层次分别是应用层(第五层)、传输层(第四层)、网络层(第三层)、数据链路层(第二层)、物理层(第一层)。
由于 TCP/IP 协议在设计时考虑到要与具体的物理传输媒体无关 , 因此在 TCP/IP 的标准中并没有对数据链路层和物理层做出规定 , 而只是将最低的一层取名为网络接口层。这样,如果不考虑没有多少内容的网络接口层,那么 TCP/IP体系实际上就只有三个层次:应用层、传输层和网络层。

1、物理层:对应于网络的基本硬件,是 Internet 的物理构成,例如,PC 机、互联网服务器、网络设备等。物理层的任务就是透明的传送比特流。在物理层上所传送数据的单位是比特。传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆等,并不在物理层之内而在物理层的下面。

2、数据链路层 :定义了将数据组成正确的帧的规范和在网络中传输帧的规范。帧:是指一串数据,是数据在网络中传输的基本单位。数据链路层的任务是在两个相邻结点间的线路上无差错地传送以帧(frame)为单位的数据。每一帧

3、网络层:定义了在 Internet 中传输的“信息包”的格式,以及从一个源,通过一个或多个路由器到达最终目标的“信息包”转发机制。这里要强调指出,网络层中“网络”二字,已不是我们通常谈到的网络的概念,而是在计算机网络体系结构中的专用名词。

4、传输层:为两个用户进程之间、管理和拆除可靠而又有效的端到端的链接。这一层曾有几个译名,如传送层、传输层或转送层。现在比较一致的意见是译为运输层。在运输层,信息的传送单位是报文。当报文较长时,先要把它分割成若干个分组,然后再交给下一层(网络层)进行传输。传输层的任务是根据下面的通信子网的特性最佳的利用网络资源,并以可靠和经济的方式,为两端主机(也就是源站和目的站)的进程之间,建立一条运输连接,以透明地传送报文。或者说,运输层向上一层进行的通信的两个进程之间提供一个可靠的端到端的服务,使它们看不见运输层以下的数据通信的细节。在通信子网内的各个交换结点以及连接各通信子网的路由器,都没有运输层。运输层只能存在于通信子网外面的主机之中。运输层以上的各层就不再关心信息传输的问题了。正因为如此,运输层就成为计算机网络体
系结构中非常重要的一层。

5、应用层 :定义了应用程序使用 Internet 的规范。 应用层是原理体系结构中的最高层,应用层确定进程之间通信的性质以满足用户的需要(这反应在用户所产生的服务请求)。应用层不仅要提供应用进程所需要的信息交换和远地操作,而且还要作为互相作用的应用进程的用户代理(user agent),来完成一些为进行语义上有意义的信息交换所必须的功能。应用层直接为用户的应用提供服务。需要注意的是,
应用层协议不是解决用户各种具体应用的协议。

TCP/IP 主要协议

TCP/IP 是一组通信协议的带名词,是由一系列协议组成的协议簇。它本身至两个协议集:TCP—传输控制协议,IP—互联网协议。网络层、传输层、应用层中使用的 TCP、IP 主要协议有:

2.1、网络层
TCP/IP 网络层包括以下协议:IP(网间协议)——定义一套在网络中通讯的规则。IP包括地址信息和一些控制信息。IP 有两个主要任务:在网络中提供无连接的、尽力而为的数据报传送,以及提供数据报
分片和重组以支持具有不同最大传输单元(MTU)的数据连路。IPv4 是当前网络中使用的版本;IPv6 是新的协议版本。
ARP(地址解析协议)——允许主机动态的发现对应于特定 IP 网络层地址的 MAC(传输媒体访问控制)地址。给定网络中的两个设备,若要通信,它们必须要知道对方设备的物理地址。

RARP(逆地址解析协议)——用于将 MAC 地址以射到 IP 地址。未知其 IP 地址的无盘工作站在启动时可使用RARP,它在逻辑上是 ARP 的逆过程。RARP 依赖于具有MAC 地址到 IP 地址映射表项的 RARP 服务器。

ICMP(网际控制报文协议)——用以将错误以及其他
有关 IP 分组处理的信息报告给源站。

2.2、传输层
TCP/IP 传输层中定义了一下两个传输层协议:

TCP(传输控制协议)——提供 IP 网络中面向链接的、端到端的可靠数据传输。

TCP 使用三次握手机制建立连接。三次握手通过允许各方对初始序列号达成一致来使得连接两端同步。此机制也保证了各方已准备好数据发送 / 接收,并且知道对方也已准备好。使用此机制保证会话建立期间和会话终止后不会传输或重传分组。

UDP(数据报协议)——作为 IP 和上层进程接口的无连接协议。与 TCP 不同,UDP 并未给 IP 加入可靠性、流量控制或差错恢复等功能。由于 UDP 的简单性,UDP 头比TCP 包含更少的字节,同时消耗更少的网络开销。TCP 和 UDP 使用协议端口号来相互区分运行在同一设备上的多个应用。端口号是 TCP 和 UDP 段的一部分,用来识别数据段属于哪个应用。众所周知的或标准的端口号被分配给各种应用,以使得 TCP/IP 协议的不同实现可以互操作。

这些众所周知的端口号的例子包括一下几种:
① FTP(传输协议) TCP 端口 20(数据)和端口 21(控
制)。② Telnet TCP 端口 23。③ TFTP( 普通文件传输协议 )
UDP 端口 69。

2.3、应用层
在 TCP/IP 协议中,对应 OSI 模型的上面三层并成一层,称为应用层。这里由许多应用层协议,它们代表多种应用,主要包括一下几种:① FTP(文件传输协议)和 TFTP(普通文件传输协议) 用于传输大量数据。② SNMP(简单网络管理协议)用于网络管理,报告网络异常,并设置网络阈值。③SMTP(简单邮件传输协议)提供电子邮件服务。④DNS( 域名系统 ) 讲网络节点名转换成网络地址。

IP 协议和 TCP 协议所提供的服务分析

3.1、IP 协议服务分析
3.1.1 不可靠的投递服务
IP 协议提供不可靠的、尽力的、无连接的数据投递服务,它无法保证数据报投递的结果。在传输的过程中,数据报可能会丢失、重发、延迟和乱序等,但是 IP 服务的本身却不关心这些结果,也不讲这些结果通知收发双方。

3.1.2 无连接的投递服务
每个数据报独立处理和传输,因此,由一台主机发出的数据报序列。可能取不同的路径,甚至其中的一部分数据报会在传输过程中丢失。

3.1.3 尽力的投递服务
IP 协议软件决不简单的丢弃数据报,只要有一线希望,就向前投递;尽力投递的另一种体现方法是 IP 协议软件执行数据报的分段,以适应具体的传输网络,数据报的合段则由最终节点的 IP 模块来完成。

3.2、TCP 协议服务分析
3.2.1 面向流的投递服务
TCP 协议在 IP 协议软件提供的服务基础啊上,支持面向链接的、可靠的、面向流的投递服务。应用程序之间传输的数据可被视为无结构的字节流(或位留),流投递服务保证收发的字节顺序完全一致。

3.2.2 面向链接的投递服务
流传输之前,TCP 收发模块之间需建立链接(类似虚电路),其后的 TCP 报文在此连接基础上传输。TCP 连接报文通过 IP 数据报进行传输,由于 IP 数据报的传输导致 ARP 地址映射表产生,从而保证了后继的 TCP 报文可以具有相同的路径。

3.2.3 可靠地投递服务
发送方 TCP 模块在形成 TCP 报文的同时,形成一个所谓的“累计核对”。“累计核对”类似校验和,并随同 TCP报文一起传输。接收方 TCP 模块根据该校验和判断传输的正确性。如果传输不正确,接收方简单的丢弃该 TCP 报文,否则进行应答。发送方如果在规定的时间内未能获得应答报文,讲自动进行重传操作。

本文从 TCP/IP 协议的模型、主要协议和所提供的服务几个方面深入的分析了它在计算机网络、数据交换、信息传递中所起的重要作用,使我们对 TCP/IP 协议有了更深的认识和理解,并且熟悉它在网络中的应用,能够帮助我们更好的处理解决一些网络问题。

TCP/IP 基础

数据包

包、帧、数据包、段、消息

以上五个术语都用来表述数据的单位,大致区分如下:

包可以说是全能性术语;
帧用于表示数据链路层中包的单位;
数据包是 IP 和 UDP 等网络层以上的分层中包的单位;
段则表示 TCP 数据流中的信息;
消息是指应用协议中数据的单位。

每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。
在这里插入图片描述
数据包首部

网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。首部的结构由协议的具体规范详细定义。在数据包的首部,明确标明了协议应该如何读取数据。反过来说,看到首部,也就能够了解该协议必要的信息以及所要处理的数据。包首部就像协议的脸。

数据处理流程

下图以用户 a 向用户 b 发送邮件为例子:
在这里插入图片描述
数据处理流程

① 应用程序处理
首先应用程序会进行编码处理,这些编码相当于 OSI 的表示层功能;
编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接何时发送数据的管理功能,相当于 OSI 的会话层功能。

② TCP 模块的处理
TCP 根据应用的指示,负责建立连接、发送数据以及断开连接。TCP 提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现这一功能,需要在应用层数据的前端附加一个 TCP 首部。

③ IP 模块的处理
IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做自己的数据,并在 TCP 首部的前端加上自己的 IP 首部。IP 包生成后,参考路由控制表决定接受此 IP 包的路由或主机。

④ 网络接口(以太网驱动)的处理
从 IP 传过来的 IP 包对于以太网来说就是数据。给这些数据附加上以太网首部并进行发送处理,生成的以太网数据包将通过物理层传输给接收端。

⑤ 网络接口(以太网驱动)的处理
主机收到以太网包后,首先从以太网包首部找到 MAC 地址判断是否为发送给自己的包,若不是则丢弃数据。
如果是发送给自己的包,则从以太网包首部中的类型确定数据类型,再传给相应的模块,如 IP、ARP 等。这里的例子则是 IP 。

⑥ IP 模块的处理
IP 模块接收到 数据后也做类似的处理。从包首部中判断此 IP 地址是否与自己的 IP 地址匹配,如果匹配则根据首部的协议类型将数据发送给对应的模块,如 TCP、UDP。这里的例子则是 TCP。
另外吗,对于有路由器的情况,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送往的主机或路由器之后再进行转发数据。

⑦ TCP 模块的处理
在 TCP 模块中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据被完整地接收以后,会传给由端口号识别的应用程序。

⑧ 应用程序的处理
接收端应用程序会直接接收发送端发送的数据。通过解析数据,展示相应的内容。

传输层中的 TCP 和 UDP

TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP。

TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,当应用程序采用 TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。
UDP 是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在 UDP 的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。
TCP 和 UDP 的优缺点无法简单地、绝对地去做比较:TCP 用于在传输层有必要实现可靠传输的情况;而在一方面,UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该根据应用的目的按需使用。

1.端口号
数据链路和 IP 中的地址,分别指的是 MAC 地址和 IP 地址。前者用来识别同一链路中不同的计算机,后者用来识别 TCP/IP 网络中互连的主机和路由器。在传输层也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。

1.1 根据端口号识别应用

一台计算机上同时可以运行多个程序。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。
在这里插入图片描述
通过端口号识别应用

1.2 通过 IP 地址、端口号、协议号进行通信识别

仅凭目标端口号识别某一个通信是远远不够的。
在这里插入图片描述
在这里插入图片描述
通过端口号、IP地址、协议号进行通信识别

① 和② 的通信是在两台计算机上进行的。它们的目标端口号相同,都是80。这里可以根据源端口号加以区分。
③ 和 ① 的目标端口号和源端口号完全相同,但它们各自的源 IP 地址不同。
此外,当 IP 地址和端口号全都一样时,我们还可以通过协议号来区分(TCP 和 UDP)。

1.3 端口号的确定

标准既定的端口号:这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。例如 HTTP、FTP、TELNET 等广为使用的应用协议中所使用的端口号就是固定的。这些端口号被称为知名端口号,分布在 0~1023 之间;除知名端口号之外,还有一些端口号被正式注册,它们分布在 1024~49151 之间,不过这些端口号可用于任何通信用途。
时序分配法:服务器有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。在这种方法下,客户端应用程序完全可以不用自己设置端口号,而全权交给操作系统进行分配。动态分配的端口号范围在 49152~65535 之间。

1.4 端口号与协议

端口号由其使用的传输层协议决定。因此,不同的传输层协议可以使用相同的端口号。此外,那些知名端口号与传输层协议并无关系。只要端口一致都将分配同一种应用程序进行处理。

2.UDP
UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。
并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为。
此外,传输途中出现丢包,UDP 也不负责重发。
甚至当包的到达顺序出现乱序时也没有纠正的功能。
如果需要以上的细节控制,不得不交由采用 UDP 的应用程序去处理。
UDP 常用于一下几个方面:1.包总量较少的通信(DNS、SNMP等);2.视频、音频等多媒体通信(即时通信);3.限定于 LAN 等特定网络中的应用通信;4.广播通信(广播、多播)。

3.TCP
TCP 与 UDP 的区别相当大。它充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。

此外,TCP 作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。

根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)。

参考文章:
郭天艳.TCP/IP协议简要分析
太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值