计算机网络—TCP/IP概述

本文章参考《TCP-IP详解卷一:协议》

一.TCP/IP协议簇简介

TCP/IP是指能够在多个不同网络之间实现信息传输的协议簇。究其本质,这就是用来传输信息的协议簇,而且TCP/IP是很多种信息传输协议的集合,包括了:FTP(文件传输协议)、SMTP(简单邮件传输协议)、TCP(传输控制协议)、UDP(用户数据报协议)、IP(网际互连协议)等传输协议。因为TCP协议和IP协议最具代表性,所以这些协议簇被总称为:TCP/IP协议。
要研究TCP/IP协议,首先要对其工作框架有一个了解,一般认为TCP/IP是一个四层协议系统

二.TCP/IP协议分层

网络协议一般是分为不同的层来进行开发的,分层的好处在于可以理清楚协议的工作框架,通过分层的思想,可以加深对协议的理解。
TCP/IP协议的四层:

  • 链路层
  • 网络层
  • 传输层
  • 应用层

在这里插入图片描述
总体来讲,链路层是最底层的,网络层建立在链路层上,提供信息传输的功能,运输层规定了信息传输的方式,而应用层通过收发信息来进行通信或者处理程序。

1.链路层

链路层,也称为数据链路层或者网络接口层,它是基于物理的。一般包括操作系统中的设备驱动程序和计算机中的网络接口卡,是信息传输的发送站和接收站。 链路层负责处理与传输介质(电缆等)相关的物理细节。
以太网协议应用于链路层上。

2.网络层

网络层,也叫互联网层,如果说链路层是基于单个的计算机而言,网络层就是搭建在多个计算机之间的信息传输网络,网络层提供点到点的传输服务。网络层也是互联网组成的基石,网络层负责处理各分组在网络中的活动,比如:分组的选路。
TCP/IP中,网络层协议主要包括:IP(网际协议)、ICMP(互联网控制报文协议)、IGMP(Internet组管理协议),其中用的最多的是IP协议,IP是网络层上的主要协议,同时被TCP和UDP使用。

网络层IP协议提供的是一种不可靠的传输服务,就是说IP协议尽可能快地把分组从源结点送到目的结点,但并不保证可靠性。

3.运输层

TCP/IP主要是通过传输层来传输信息的,网络层实现点到点的传输,传输层实现端到端的传输(比如主机之间)。传输层中,有俩个不同的传输协议:

  • TCP(传输控制协议)
  • UDP(用户数据报协议)

这是俩种截然不同的协议,他们的不同主要区别在传输信息的可靠性及简单性,各自在不同的应用程序中有不同的用处。

TCP协议:TCP为俩台连接设备提供高可靠性的数据传输,夸张点说通过TCP传输的数据是万无一失。TCP从应用程序接收数据,将数据分成合适的小块分给网络层,通过网络层将数据传输出去。TCP收发的数据一般不会有丢包这种情况,况且TCP传输数据的三次握手也保证了数据传输的可靠性,就是TCP传输数据的过程较为繁琐复杂。运输层提供了高可靠性的端到端通信,因此应用层可以忽略这些传输的细节。
TCP协议在不可靠的IP层上提供了一个可靠的运输层,为了保证可靠性,TCP采用了:超时重传、发送接收端到端的确认分组等机制。

UDP协议:与TCP协议不同,UDP协议为应用层提供了一种简单的数据传输服务。UDP只是把称作数据包的分组从一台主机传输到另一台主机上,但是并不能保证数据能够传到另一端!!!而且数据传输的可靠性也要依靠应用层来提供。简单来说UDP就是无脑传输。

4.应用层

应用层负责处理特定的应用程序,比如:

  • Telnet(远程登陆)
  • FTP(文件传输协议)
  • SMTP(邮件传送协议)
  • SNMP(简单网络管理协议)

5.不同层次之间的关联

下图给出了TCP/IP的各层之间的关联
在这里插入图片描述
可以看出,用户进程之间可以通过传统的TCP/UDP协议访问IP协议,然后进行传输。也可以直接通过网络层来传输信息,主要是IP协议,还有一些是ICMP协议。
ICMP协议是IP协议的附属协议,IP层用ICMP来与其他主机或路由器交换错误报文和其他重要信息。
ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址。

通常下三层在内核(操作系统)中执行,应用层关心应用程序的细节而不是数据在网络中的传输活动。

三.网络互联

80年代初,人们把孤立的计算机网络连接在一起,从而形成网络,90年代,人们把多个网络连接在一起,形成了更大的网络,称作互联网,一个互联网就是一组通过相同协议簇连接在一起的网络。
构建互联网的最简单的方法就是把俩个或多个网络通过路由器进行连接,路由器是一种特殊的用于网络互联的硬件盒。这些盒子也称为IP路由器,也可以叫网关。
路由器可以为不同类型的物理网络提供链接,比如:

  • 以太网
  • 令牌环网
  • 点对点的链接
  • FDDI(光纤分布式数据接口)

如图,是俩个网络通过一个IP路由器相互连接的框图:
在这里插入图片描述
俩台主机可以看作俩个端系统,端系统之间是通过应用层和运输层的协议来连接的,但这实现的基础是可以在网络层上实现交流,而网络层上的交流是依靠路由器来连接的。
可以看出,一个路由器有多个网络接口层,意味着路由器可以将多个网络连接在一起。

连接网络的另一个途径是使用网桥,网桥是在链路层上进行互联,路由器是在网络层上进行互联,网桥使得多个局域网组合在一起,对于上层来说,使用网桥连接的多个局域网(LAN)看起来就像是一个局域网。

四.互联网的地址

了解一些传输协议以及网络互联后,可以大概理解互联网中数据传输的情况了,数据是如何做到准确传输到位置呢?实际上数据的传输都是有对应的接口的,只要向对应的接口传输数据就没问题。

1.IP地址

互联网上的每一个接口必须有唯一一个Internet地址,也叫IP地址,IP地址长32bit(IPV4),分为五类地址格式:
在这里插入图片描述

在这里插入图片描述
这些32位地址经常写成四个十进制数的结构,这种表示方法称为“点分十进制表示方法”,例如一个B类的地址可以表示为:140.252.13.33
需要注意的是,多接口主机具有多个IP地址,每个接口都对应一个IP地址。

2.DNS域名系统

这么多IP地址让你背下来,可以吗?哈哈,反正我不行。由于IP地址比较难区分,而且容易输入出错,所以就产生了DNS域名系统。
尽管通过IP地址可以识别主机上的网络接口,进而访问主机,但人们还是喜欢用主机名来访问,为什么主机名可以代替DNS?因为DNS是一个分布式的数据库,由他来提供IP地址和主机名之间的映射信息,只要知道主机名,就如同知道IP地址一样。

五.TCP/IP的传输封装

当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐一通过每一层直到以比特流的形式传入网络。数据进入协议栈的封装过程如图:
在这里插入图片描述
其中,每一次对收到的数据都要增加一些首部信息(有的还要增加尾部信息),就像盖章一样。

  • TCP传给IP的数据单元称为TCP报文;
  • IP传给网络接口层的数据单元称为IP数据报;
  • 通过以太网传输的比特流称作帧;
  • UDP数据与TCP数据的封装基本一致,唯一不同就是UDP传给IP的数据单元称作UDP数据报,而且UDP的首部长8字节;
  • 由于TCP、UDP、ICMP、IGMP都向IP传数据,因此IP需要在首部中表示该数据属于那一个协议传输的,IP在首部中存入一个8位的数值,称为协议域。1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。

当主机收到一个以太网数据帧时,数据就开始从协议栈中向上一层一层分解,同时去掉封装时所加的各种报文首部,这个过程称作分用。
如图,分用其实就是封装的逆过程:
在这里插入图片描述

发布了76 篇原创文章 · 获赞 219 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_43743762/article/details/104779214