#! https://zhuanlan.zhihu.com/p/538791438
TCP/IP协议
TCP/IP从名称上看包括两种协议,即传输控制协议TCP和网际协议IP。但实际上是一组协议,包括上百个能完成各种功能的协议,eg:远程登陆、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完成传输的重要协议。
通常说TCP/IP是Internet协议簇,而不只是TCP/IP协议。
TCP/IP特性与应用
- TCP/IP是根据信息中所含的位置来进行数据传送的,它不能确保每个独立路由的数据包可靠和依序地到达目的地。再每一个连线过程中,线路都不是被“独占”的,而是直接映射到硬件位置上,此种数据包交换方式的传送使得TCP/IP能适应各种不同的网络硬件设备。
- 因为数据包交换并不能确保每一个数据包的可靠性,因此就现需要通信软件来自动侦测和修复传送过程中可能出现的错误,以及处理不良的数据包。关键技术是将数据流进行切割,然后编号传送,再通过接收方的确认来保证数据的完整性。
- 在数据包交换技术中,TCP/IP是独立于硬件之上的。TCP/IP有自己的一套数据包规则和定义,能应用在不同的网络上。
- 只要用TCP/IP连接网络,就将获得一个独一无二的识别位址。数据包在交换的过程中是以位置为依据的,不管数据包所经过的路由选择如何,数据都能被送达指定的位址。
- TCP/IP的确认模式是以端到端进行的,这样就无需理会数据包交换过程中所参与的其他设备,发送端和接收端能互相确认才是我们所关心的。
- TCP/IP除提供基础的传送服务外,还提供许多一般应用标准。
互联网地址
互联网每个接口必须有唯一的Internet地址(IP),有IPv4和IPv6。Internet地址并不是采用平面形式的地址空间,而是具有一定结构的。
通常写成4个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法“。
域名系统
在TCP/IP领域中,域名系统(DNS)是一个分布式的数据库,提供IP地址和主机名之间的映射信息。
封装
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(又是还会增加尾部信息),TCP传给IP的数据单元称作TCP消息段或简称为TCP段。
以太网数据帧的物理特性是其长度必须在46~1500字节之间。
IP和网络接口层之间传送的数据单元应该是数据包(Packet)。分组既可以是一个IP数据报,也可以是IP数据报的一个片(Fragment)。
UDP数据与TCP数据基本一致,唯一的不同是UDP传给IP的信息单元称作UDP数据报,而且UDP的首部长度为8字节。
由于TCP、UDP、ICMP和IGMP都向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于那一层。
IP在首部中存入一个长度为8位的数值,称作协议域。
1表示ICMP协议
2表示IGMP协议
6表示TCP协议
17表示UDP协议
网络接口要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部加入某种形式的表示,以指名生成数据的网络层协议,为此,以太网的帧首部也有一个16位的帧类型域。
TCP/IP工作模型
由ISO开发的一套标准架构OIS模型。
OIS常被引用来说明数据通信协议的结构及功能。
OIS把数据通信的各种功能分为7层。在功能上,它们又可以被划分为以下两个组。
一、网络群组:由物理层、数据链路层和网络层组成。
二、使用者群组:由传输层、会话层、表示层和应用层组成。
各个协议层的排列关系如下:
1:物理层
2:数据链路层
3:网络层
4:传输层
5:会话层
6:表示层
7:应用层
4、5、6、7层定义了应用程序的功能,1、2、3层主要面向通过网络的端到端的数据流。
TCP/IP协议层
通过把通信软件划分为多层,协议栈允许工作分工、易于实现和现代测试,以及开发额外的层实现能力。
各层通过简单的接口与其上下层进行通信。在通信方面,各层为它的直接上层提供服务,使用它的直接下层所提供的服务。
TCP/IP协议的4层模型
应用层
由使用TCP/IP进行通信的程序所提供。一个应用就是一个用户进程,它通常与其他主机上的另一个进程合作。应用层的协议如Telnet和FTP,应用层和传输层之间的接口由端口号和套接字(Socket)所定义。
传输层
提供了端到端的数据传输,把数据从一个应用传输到它的远程对等实体,传输层可以同时支持多个应用。
TCP
最常用的传输层协议就是传输控制协议(TCP),它提供了面向连接的可靠的数据传送、重复数据抑制、拥塞控制,以及流量控制。
UDP
它提供了一种无连接的、不可靠的、尽力传送的服务。因此,如果用户需要,使用UDP作为传输协议的应用就必须提供各自的端到端的完整性、流量控制和拥塞控制。通常对于那些需要快速传输的机制并能够容忍某些数据丢失的应用可以使用UDP
网络层
提供了互联网的“虚拟网络”镜像。网际协议(Internet Protocol ,IP)是这一层中最重要的协议,一种无连接的协议,不负责下层的传输可靠性。IP不提供可靠性、流控制或者错误恢复,这些功能必须由更高层提供。
IP提供了路由功能,试图把发送的消息传输到目的端。
IP网络中的消息单位为IP数据报,这是TCP/IP网络上传输的基本信息单位。互联网络层的其他协议由IP、ICMP、IGMP、ARP以及RARP。
网络接口层
网络接口层也叫做链路层(Link Layer)或者数据链路层(Data-link Layer),是实际网络硬件的接口。这个接口既有可能提供可靠的传输,也有可能不提供可靠的传输;并且既可以是面向消息的传输,也可以是面向流的传输。实际,TCP/IP没有在这一层规定人格协议,但几乎可以使用任何一种可用的网络接口。
TCP/IP应用
TCP/IP协议栈中的最高层协议是应用协议,它们与互联网上的其他主机通信,并且是TCP/IP协议簇中用户可见的接口。
共同特征
- 既可以是用户编写的应用,也可以是TCP/IP产品所带的标 准应用。实际上,TCP/IP 协议簇包含如下一些协议。
- Telnet∶用于通过终端交互式访问互联网上的远程主机。
- 文件传输协议(File Transfer Protocol,FTP)∶用于高速的磁盘到磁盘的文件传输。简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)∶作为互联网的邮件系统。这些都是广泛实施的应用协议,当然还有许多其他应用程序。每种特定TCP/IP的实现都会包含一个或大或小的应用协议集。
- 它们使用UDP或者TCP作为传输机制。UDP是不可靠的传输,并且没有提供流量控制,因此,在这种情况下,应用本身必须提供错误恢复、流量控制,以及拥塞控制等功能。在TCP上建立应用往往会容易一些,因为它是一种可靠的、面向连接的、不容易拥塞的、具有流量控制功能的协议。大多数应用协议使用TCP,但是也有建立在UDP上的应用,它们通过减少协议的系统开销来实现更佳的性能。
- 大多数应用使用客户/服务器(Client/Server)交互模型。应用程序通常使用客户/服务器模型进行通信。