【温故而知新】Tcp/Ip协议——总览
Tcp/Ip协议
一、概念
“三网”:即电信网络、有线电视网络和计算机网络
标准(Standards)
描述了协议的规定,设定了最简的性能集。
协议(Protocol)
网络设备用于交换信息的系列规则和约定。通常指某一个协议,一般由某一个或者一组文件如rfc/draft来指定。制定协议的标准化组织:国际电信联盟(ITU)、因特网工程任务组(IETF)、国际标准化组织(ISO)、电子电气工程师学会(IEEE)。
通信协议
一组规则的集合,是进行交互的双方必须遵守的约定。网络协议的三个要素是:语法、语义和同步。
语法:是数据与控制信息的结构或格式。如:数据格式、编码、信号电平等。
语义:是用于协调和进行差错处理的控制信息。如:需要发生何种控制信息,完成何种动作,做出何种应答等。
同步(定时):是对事件实现顺序的详细说明,如:速度匹配、排序等。
协议族(Protocol Family)
彼此相互关联的一组协议。
协议栈(Protocol Stack)
某一组协议的关系以及该组协议的层次结构,一般有清晰的up/down依赖关系和上下行消息交互。
Tcp/Ip
传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol),是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
二、计算机网络
主机(host),连接在因特网上的计算机都称为主机(host)。
结点(node),可以是计算机(Host)、集线器(Hub)、交换机(Switch)、路由器(Router)。
网络(network)由若干结点(node)和连接这些结点的链路(link)组成。
互联网(互连网internet、网络的网络network of networks),网络和网络之间通过路由器连接。
因特网(Internet[第一个字母I,大写]),专指当前世界上最大的互连网络。
网络把许多计算机连接在一起。因特网则把许多网络连接在一起。以小写字母 i 开始的 internet(互联网或互连网)是一个通用名词,它泛指由多个计算机网络互连而成的网络。以大写字母I开始的的 Internet(因特网)则是一个专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用 TCP/IP 协议族作为通信的规则,且其前身是美国的 ARPANET。
图(a)中虚线圈的是结点。实线的是链路。图(b)互连网(internet)
用户的主机通过因特网服务提供者 ISP (Internet Service Provider)提供接入网 AN (Access Network)的服务接入因特网,ISP通过网络接入点NAP(Network Access Point)相互通信。
计算机网络,分为主干网、地区网和校园网(或企业网)。
因特网的工作方式上看,可以划分为以下的两大块:
(1) 边缘部分 由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
(2) 核心部分 由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
因特网的标准化工作
因特网协议开发的组织
制订因特网的正式标准要经过以下的四个阶段
因特网草案(Internet Draft) ——有效期六个月,在这个阶段还不是 RFC 文档。
建议标准(Proposed Standard) ——从这个阶段开始就成为 RFC 文档。
草案标准(Draft Standard)
因特网标准(Internet Standard)
各种RFC之间的关系
计算机网络的类别
不同作用范围:
个人区域网(PAN:Personal Area Network) 个人区域网就是在个人工作地方把属于个人使用的电子设备用无线技术连接起来的网络,也称为无线个人区域网(WPAN:Wireless PAN)。
局域网(LAN:Local Area Network) 小范围(一般是方圆几千米以内)的某一区域内由多台计算机互联成的计算机组。
城域网(MAN:Metropolitan Area Network) 作用范围一般是一个城市。
广域网(WAN:Wide Area Network) 跨越大的、地域性的(跨越省、市,甚至一个国家)计算机网络的集合。广域网包括大大小小不同的子网,子网可以是局域网,也可以是小型的广域网。
从网络的使用者进行分类:公用网 (public network) 专用网 (private network)
网络设备
集线器(Hub) 简单的把多台机器连接在一起。工作在物理层(最底层),没有匹配的软件系统,是纯硬件设备。共享带宽,集线器不能判断数据包的目的和类型,所有设备发出数据以广播方式发送到每个接口,这样集线器也连接了一个广播域的网络。
交换机(Switch) 工作在数据链路层(第二层),交换机比集线器更加先进,允许连接在交换机上的设备并行通讯,交换机比集线器更加先进,允许连接在交换机上的设备并行通讯。
路由器(Router) 工作在网络层(第三层),主要用来进行网络与网络的连接,主要用于分组交换(packet switching)。路由器把数据从一个网络发送到另一个网络,这个过程就叫路由。路由器不仅能像交换机一样隔离冲突域,而且还能检测广播数据包,并丢弃广播包来隔离广播域,有效的扩大网络的规模。在路由器中记录着路由表,路由器以此来转发数据,以实现网络间的通讯。在路由器中的输入和输出端口之间没有直接连线。路由器处理分组的过程是:把收到的分组先放入缓存(暂时存储);查找转发表,找出到某个目的地址应从哪个端口转发;把分组送到适当的端口转发出去
三种交换 电路交换、报文交换、分组交换
电路交换(Circuit Switching)建立一条临时的专用通路,使用完以后拆除链接。过程:建立连接—通话—释放连接。在通话过程中,始终占用通信资源。
报文交换(Message Switching)不在通信节点建立通路,将信息组合成报文,采用虚储-转发机制,线路的利用率高,但延迟大。
分组交换(Packet Switching)数据包定长的报文交换,交换节点的缓冲区可减小,传播时延也更小。
三、计算机网络的性能
1.速率
比特(bit),计算机中数据量的单位,也是信息论中使用的信息量的单位。Bit 来源于 binary digit,意思是一个“二进制数字”,因此一个比特就是二进制数字中的一个 1 或 0。
速率(数据率(data rate)或比特率(bit rate)),主机在数字信道上传输数据的速率。是计算机网络中最重要的一个性能指标。
速率的单位是b/s(bit/s、bps、比特每秒),kb/s(k=10的3次方=千), Mb/s(兆=10的6次方), Gb/s(吉=10的9次方)、T/s(太=10的12次方)等。速率往往是指额定速率或标称速率。
2.带宽
带宽(bandwidth),1.是指信号具有的频带宽度,单位是赫Hz(或千赫、兆赫、吉赫等)。2.是数字信道所能传送的“最高数据率”的同义语,单位是“比特每秒”,或 b/s (bit/s)。
更常用的带宽单位是
千比每秒,即 kb/s (103 b/s)
兆比每秒,即 Mb/s(106 b/s)
吉比每秒,即 Gb/s(109 b/s)
太比每秒,即 Tb/s(1012 b/s)
单位换算,K = 210 = 1024,M = 220,G = 230,T = 240。
3. 吞吐量
吞吐量(throughput),表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量受网络的带宽或网络的额定速率的限制。
4.时延
时延(delay 或 latency),也称为延迟或迟延,数据(一个报文或分组,甚至比特)从网络的一端传送到另一端所需的时间。
传输时延(发送时延transmission delay),发送数据时,数据块从结点进入到传输媒体所需要的时间。也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。发送时延=数据块长度(比特)/ 信道带宽(比特/秒)
传播时延(propagation delay),电磁波在信道中需要传播一定的距离而花费的时间。
传播时延=信道长度(米)/ 信号在信道上传播速率(米/秒)
处理时延,交换结点为存储转发而进行一些必要的处理(分析首部、提取数据、差错检验、查找路由等)所花费的时间。
排队时延,结点缓存队列中分组排队(输入队列中排队等待处理,输出队列中排队等待转发)所经历的时延。
数据经历的总时延就是发送时延、传播时延、处理时延和排队时延之和:
总时延 = 发送时延+传播时延+处理时延+处理时延
四种时延所产生的地方
5. 时延带宽积
传播时延和带宽的相乘。
圆形管道代表一个链路。管道的长度是链路的传播时延,管道的截面积是链路的带宽,链路的时延带宽积就是这个管道的体积,又称为以比特为单位的链路长度。
6. 往返实际RTT
往返实际RTT(Round-Trip Time),从“发送方”发送数据开始,到“发送方”收到来自“接收方”的确认(“接收方”收到数据后立即发送确认),总共经历的时间。
6. 利用率
利用率有“信道利用率”和“网络利用率”。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络利用率则是全网络的信道利用率的加权平均值。
时延与网络利用率的关系
当某信道利用率增大时,时延也就迅速增加,故信道利用率并非越高越好。ISP通常控制信道利用率不超过50%,超过了就要扩容,增大线路的带宽。
若令 D0:网络空闲时的时延,D:网络当前的时延,U:利用率。它们之间的关系:
四、计算机网络体系结构
计算机网络最重要的功能:连通性,计算机网络使上网用户之间都可以交换信息。共享,即资源共享,可以是信息共享、软件共享,也可以是硬件共享。
计算机网络系统的体系结构,类似于计算机系统多层的体系结构,它是以高度结构化的方式设计的。
结构化:是指将一个复杂的系统分解成一个个容易处理的子问题,然后加以解决。这些子问题相对独立,又相互联系。
层次结构:是指将一个复杂的系统设计问题划分成层次分明的一组组容易处理的子问题,各层执行自己所承担的任务。层与层之间有接口,它们为层与层之间提供了组合的通道。
分层结构的好处在于:
(1)独立性强。具有相对独立功能的每一层,不必知道下一层是如何实现的,只要知道下层通过层间接口提供的服务是什么,本层向上一层提供的服务是什么就可以了。
(2)功能简单。系统经分层后,整个复杂的系统被分解成若干个范围小的、功能简单的部分,使每一层功能简单明了,程序设计和实现方便。
(3)适应性强。当任何一层发生变化,只要层间接口不发生变化,就不影响其他任何一层。这就意味着可以对分层结构中的任何一层的内部进行修改而不影响其他层。
(4)易于实现和维护。分层使得实现和调试一个庞大而复杂的网络系统变得简单和容易。
(5)结构可分割。指被分层的各层的功能均可采用最佳的技术手段来实现。
(6)易于交流和促进有利于标准化工作。
网络协议体系结构的两种国际标准:
理论上的国际标准:OSI 网络协议体系。法律上的(de jure)
事实上的国际标准:TCP/IP 网络协议体系。事实上的(de facto)
1.OSI七层结构
OSI组织推出了开放系统互联协议,简称ISO/OSI七层结构的开放式互联参考模型。
OSI开放系统模型把计算机网络通信分成七层,即物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
2. TCP/IP的DOD四层结构
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。
从协议分层模型方面来讲,TCP/IP体系由四个层次组成:网络接口层(或链路层)、网络层(IP层或网际层)、传输层(TCP层或运输层)、应用层。
3. OSI参考模型与TCP/IP协议对应关系
4.五层协议的体系结构
综合“OSI七层结构”和“TCP/IP”四层结构的优点,采用一种只有五层协议的体系结构 。 物理层、数据链路层、网络层(网际层)、传输层(运输层)、应用层。
关于分几层:“OSI七层结构”是理论上的,“TCP/IP四层结构”是实际中应用的,“五层结构”是为了便于学习理解。下面的学习和理解都是按照“五层结构”。
应用层(application layer):直接为用户的应用进程提供服务。涉及协议有http、ftp、tftp、telnet、smtp、snmp、dns、rtp、sip等。
传输层(transport layer):为两个主机中进程之间的通信提供服务。主要协议:tcp、udp。传输控制协议(tcp),面向连接的,能够提供可靠的交付。传输单元:报文段(segment)。用户数据报协议(udp),无连接的,不保证提供可靠的交付,只能提供“尽最大努力交付(best effort delivery)”。传输单元:用户数据报(user datagram)。
网络层(network layer):为分组交换网上的不同主机提供通信服务。主要协议:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)、控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。网络层把传输层产生的“报文段”或“用户数据报”封装成“分组”或“包”进行传送。由于网络层使用Ip协议,分组也叫IP数据报(简称数据报)。不论那一层,都可以笼统的用“分组(packet)”表示数据单元。但注意不同层的分组是不一样的。传输层的“用户数据报”和网络层的“IP数据报”是不同的。传输单元:分组。
数据链路层(data link layer):链路层把网络层交下来的“IP数据报”组装成“帧(framing)”,在两个相邻的结点间的链路上“透明”的传送“帧(frame)”中的数据。每一帧包括数据和必要的控制信息。传输单位:帧(frame)。
物理层(physical layer):透明的传输比特流。传输单位:比特(bit)
各层的传输单元
实体(entity) 表示任何可发送或接收信息的硬件或软件进程。
协议是控制两个对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下层所提供的服务。协议是“水平的”,即协议是控制对等实体之间通信的规则。服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。服务访问点 SAP (Service Access Point):同一系统相邻两层的实体进行交互的地方。
应用进程的数据在各层之间的传递过程中所经历的变化。
主机1的进程AP1向主机2的进程AP2传输数据。
1. 主机1
应用进程数据AP1先传送到应用层,加上应用层首部,成为应用层 PDU。
应用层PDU再传送到运输层,加上运输层首部,成为传输层报文。
传输层报文再传送到网络层,加上网络层首部,成为 IP 数据报(或分组)。
网络层IP 数据报再传送到数据链路层,加上链路层首部和尾部,成为数据链路层帧。
数据链路层帧再传送到物理层,最下面的物理层把比特流传送到物理媒体。
2.接着在物理层介质上传输。电信号(或光信号)在物理媒体中传播,从发送端物理层传送到接收端物理层。
3. 主机2
物理层接收到比特流,上交给数据链路层。
数据链路层剥去帧首部和帧尾部,取出数据部分,上交给网络层。
网络层剥去首部,取出数据部分,上交给运输层。
传输层剥去首部,取出数据部分,上交给应用层。
应用层剥去首部,取出应用程序数据,上交给应用进程。
应用进程AP2收到了AP1发来的应用程序数据!
图1.主机1自上而下传输
图2.物理层介质传输
图3.主机2自下而上传输
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 想让你多爱自己一些的开源计时器
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 大模型 Token 究竟是啥:图解大模型Token
· 如何在 .NET 中 使用 ANTLR4
· HttpClient使用方法总结及工具类封装
2013-12-25 mysql 获取全局唯一值
2013-12-25 linux下Mysql 的安装、配置、数据导入导出