zoukankan      html  css  js  c++  java
  • TCP/IP协议

    TCP/IP协议(一)网络基础知识

    一.协议简介

    TCP/IP 是基于 TCP 和 IP 这两个最初的协议之上的不同的通信协议的大的集合。

    TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。
    TCP/IP协议集包括应用层,传输层,网络层,网络访问层。

    TCP

    TCP 用于从应用程序到网络的数据传输控制。

    TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。

    IP-网际协议

    IP 负责计算机之间的通信。

    IP 负责在因特网上发送和接收数据包。

    HTTP

    HTTP 负责 web 服务器与 web 浏览器之间的通信。

    HTTP 用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页)。

    HTTPS

    HTTPS 负责在 web 服务器和 web 浏览器之间的安全通信。

    作为有代表性的应用,HTTPS 会用于处理信用卡交易和其他的敏感数据。

    SSL

    SSL 协议用于为安全数据传输加密数据。

    SMTP

    SMTP 用于电子邮件的传输。

    MIME

    MIME 协议使 SMTP 有能力通过 TCP/IP 网络传输多媒体文件,包括声音、视频和二进制数据。

    IMAP

    IMAP 用于存储和取回电子邮件。

    POP

    POP 用于从电子邮件服务器向个人电脑下载电子邮件。

    FTP

    FTP 负责计算机之间的文件传输。

    NTP

    NTP 用于在计算机之间同步时间(钟)。

    DHCP

    DHCP 用于向网络中的计算机分配动态 IP 地址。

    SNMP

    SNMP 用于计算机网络的管理。

    LDAP

    LDAP 用于从因特网搜集关于用户和电子邮件地址的信息。

    ICMP

    ICMP 负责网络中的错误处理。

    ARP

    ARP - 用于通过 IP 来查找基于 IP 地址的计算机网卡的硬件地址。

    RARP

    RARP 用于通过 IP 查找基于硬件地址的计算机网卡的 IP 地址。

    BOOTP

    BOOTP 用于从网络启动计算机。

    PPTP

    PPTP 用于私人网络之间的连接(隧道)。

    详见:https://www.cnblogs.com/imyalost/p/6086808.html

    下面是协议层从底层至顶层的一个模型图:

    下面是协议层从底层至顶层的一个模型图:

    一、计算机网络的背景

    1.1 计算机的发展

    有人说:“20世纪最伟大的发明就是计算机”,自诞生伊始,计算机经历了一系列发展,从大型通用计算机、超级计算机、小型机、个人电脑、工作站以及现如今笔记本、平板、智能手机等,

    计算机已经彻底融入了我们的生活

    1.2 计算机的发展模式

    起初,计算机只是以单机模式(独立模式)被广泛应用,随着发展,计算机被一个个的连接起来,形成了一个计算机网路,从而实现了信息共享,远距离传递信息等工作

    计算机网络,根据规模可分为2种:

    WAN:Wide Area Network(广域网)

    LAN:Local Area Nerwork(局域网)

    二、计算机与网络发展的七个阶段

    1.1 批处理

    Batch Processing:事先将用户程序和数据装入卡带或磁带,由计算机按一定顺序读取,使用户要执行的程序和数据能够一并批量得到处理的方式

    1.2 分时系统TSS

    Time Sharing System:多个终端和同一个计算机相连,允许多个用户同时使用一台计算机系统

    特性:多路性、独占性、交互性、及时性

    1.3 计算机间的通信

    计算机之间以通信线路连接,加快了数据读取时间,极大地缩短了传输数据时间,多台计算机分布式处理,架构变得更加灵活,操作更加人性化

    1.4 计算机网络

    窗口系统的产生,方便了用户操作,用户不仅可以同时执行多个程序,还能自由切换作业

    窗口系统:在计算机上可以打开多个图形窗口进行处理的系统。代表性的有常用于Unix上的 X Window System、微软的Windows、苹果的Mac OS X等

    1.5 互联网的出现

    异构型计算机连接和电子邮件、万维网等信息传播方式促使互联网开始从大到整个公司小到一个家庭内部开始普及互联网,实现了世界各地用户通过接入互联网而即时沟通与交流

    1.6 互联网技术为中心的时代

    代表性事件:作为通信基础设施、支撑通信网络的电话网,被IP网所替代

    1.7 “单纯建立连接”到“安全建立连接”

    互联网时代给人带来了高度便捷的信息网络环境,但也带来了负面的问题:计算机病毒、信息泄露、网络欺诈等,出于个人信息安全以及数据通信更加安全便捷,安全建立连接自然而然的出现了

    三、协议

    1.1 随处可见的协议

    互联网中常用的代表性的协议有IP、TCP、HTTP等,LAN中常用协议有IPX、SPX等

    “计算机网络体系结构”将这些网络协议进行了系统的归纳;TCP/IP就是这些协议的集合

    其中,还有Novell公司的IPX/SPX、苹果公司的AppleTalk(仅限苹果公司计算机使用)、IBM开发的用于构件大规模网络的SNA以及前DEC公司开发的DECnet等

    1.2 协议的必要性

    简单来说,协议就是计算机之间通过网络实现通信时事先达成的一种“约定”;这种“约定”使那些由不同厂商的设备,不同CPU及不同操作系统组成的计算机之间,只要遵循相同的协议就可以实现通信

    协议可以分很多种,每一种协议都明确界定了它的行为规范:2台计算机之间必须能够支持相同的协议,并且遵循相同的协议进行处理,才能实现相互通信

    1.3 分组交换协议

    定义:将大数据分割为一个个叫做包(Packet)的较小单位进行传输的方法(之前的http协议学习随笔中有讲到数据通信过程);如图

    计算机通信会在每一个分组中附加上源主机地址和目标主机地址送给通信线路;这些发送端地址、接收端地址以及分组序号写入的部分就是“报文首部”

    一个较大的数据被分为很多个分组,为了标明原始数据的归属,有必要将分组序号写入包中,接收端会根据序号,分组按序重新装配为原始数据

    协议中,通常会规定报文首部应写入哪些信息,如何处理;相互通信的每台计算机则根据协议构造报文首部,读取首部等内容,发送和接收方必须对报文首部和主体保持一致的定义和解释

    四、协议的标准化

    计算机通信诞生之初,系统化与标准化未收到重视,不同厂商只出产各自的网络来实现通信,这样就造成了对用户使用计算机网络造成了很大障碍,缺乏灵活性和可扩展性

    为解决该问题,ISO(国际标准化组织)制定了一个国际标准OSI(开放式通信系统互联参考模型)

    TCP/IP并非ISO指定,是由IETF(国际互联网工程任务组)建议、致力推进标准化的一种协议,其中,大学等研究机构和计算机行业是推动标准化的核心力量,现已成为业界标准协议

    协议的标准化也推动了计算机网络的普及

    五、协议分层和OSI参考模型

    1.1 协议的分层

    概念:ISO在指定标准的OSI之前,提出了作为通信协议设计指标的OSI参考模型,将协议分为七层,使得原来复杂的网络协议更加简单化

    定义:在七层模型中,每个分层都接受由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务,上下层之间进行交互所遵循的约定叫做“接口”,同一层之间的交互所遵循的约定叫做“协议”

    协议分层的优点:

    每个分层可以独立使用,其实系统中某些分层发生变化,也不会影响整个系统,因此可以构造一个扩展性和灵活性都比较强的系统;

    此外,通过分层可以细分通信功能,更易于单独实现每个分层的协议,界定各个分层的具体责任和义务 

    协议分层的劣势:

    过分模块化,处理变得更加沉重,以及每个模块都不得不事先相似的处理逻辑等

    1.2 OSI参考模型

    实际上,分组通信协议很复杂,OSI参考模型将其分为了易于理解的七个分层,如下图:

    不过,OSI参考模型只是一个模型,对各层只做了粗略的定义,并没有对接口和协议做详细的定义,想深入了解还需要学习具体的协议规范

    1.3 OSI参考模型中每个分层的作用

    下图表述了简单的每个分层的作用:

    1.3.1 应用层:为应用程序提供服务并规定应用程序中通信相关的细节;包括的协议如下:

    ①:超文本传输协议HTTP:这是一种最基本的客户机/服务器的访问协议;浏览器向服务器发送请求,而服务器回应相应的网页

    ②:文件传送协议FTP:提供交互式的访问,基于客户服务器模式,面向连接 使用TCP可靠的运输服务

       主要功能:减少/消除不同操作系统下文件的不兼容性 

    ③:远程登录协议TELNET:客户服务器模式,能适应许多计算机和操作系统的差异,网络虚拟终端NVT的意义

    ④:简单邮件传送协议SMTP:Client/Server模式,面向连接 

       基本功能:写信、传送、报告传送情况、显示信件、接收方处理信件 

    ⑤:DNS域名解析协议:DNS是一种用以将域名转换为IP地址的Internet服务

    ⑥:简单文件传送协议TFTP:客户服务器模式,使用UDP数据报,只支持文件传输,不支持交互,TFTP代码占内存小 

    ⑦:简单网络管理协议(SNMP): SNMP模型的4个组件:被管理结点、管理站、管理信息、管理协议

       SNMP代理:运行SNMP管理进程的被管理结点

       对象:描述设备的变量

       管理信息库(MIB):保存所有对象的数据结构

    ⑧DHCP动态主机配置协议: 发现协议中的引导文件名、空终止符、属名或者空,DHCP供应协议中的受限目录路径名 Options –可选参数字段,参考定义选择列表中的选择文件

    1.3.2 表示层:将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式;主要负责数据格式的转换,确保一个系统的应用层信息可被另一个系统应用层读取

    具体来说,就是将设备固有的数据格式转换为网络标准传输格式,不同设备对同一比特流解释的结果可能会不同;因此,主要负责使它们保持一致

    1.3.3 会话层:负责建立和断开通信连接(数据流动的逻辑通路),记忆数据的分隔等数据传输相关的管理

     

    PS:其实在应用层、表示层、会话层这三层,协议可以共用:

    1.3.4 传输层:只在通信双方的节点上(比如计算机终端)进行处理,而无需在路由器上处理,传输层是OSI中最重要、最关键的一层,是唯一负责总体的数据传输和数据控制的一层;

    传输层提供端到端的交换数据的机制,检查分组编号与次序,传输层对其上三层如会话层等,提供可靠的传输服务,对网络层提供可靠的目的地站点信息主要功能

    在这一层,数据的单位称为数据段(segment)

    主要功能:

    ①:为端到端连接提供传输服务

    ②:这种传输服务分为可靠和不可靠的,其中Tcp是典型的可靠传输,而Udp则是不可靠传输

    ③:为端到端连接提供流量控制,差错控制,服务质量(Quality of Service,QoS)等管理服务

    包括的协议如下:

    TCP:传输控制协议,传输效率低,可靠性强

    UDP:用户数据报协议,适用于传输可靠性要求不高,数据量小的数据(比如QQ)

    DCCP、SCTP、RTP、RSVP、PPTP等协议

    具体的内容可参考这篇文章:http://book.51cto.com/art/200807/81191.htm

    1.3.5 网络层:将数据传输到目标地址;目标地址可以使多个网络通过路由器连接而成的某一个地址,主要负责寻找地址和路由选择,网络层还可以实现拥塞控制、网际互连等功能

    在这一层,数据的单位称为数据包(packet)

    网络层协议的代表包括:IP、IPX、RIP、OSPF等

    1.3.6 数据链路层:负责物理层面上的互联的、节点间的通信传输(例如一个以太网项链的2个节点之间的通信);该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

    在这一层,数据的单位称为帧(frame)

    数据链路层协议的代表包括:ARP、RARP、SDLC、HDLC、PPP、STP、帧中继等

    1.3.7 物理层:负责0、1 比特流(0/1序列)与电压的高低、逛的闪灭之间的转换

    规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性;该层为上层协议提供了一个传输数据的物理媒体。只是说明标准

    在这一层,数据的单位称为比特(bit)

    属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi令牌环网等

    关于七层协议具体的协议以及定义规范,后面随笔会慢慢介绍,推荐一篇博客,有关七层协议的介绍:http://blog.csdn.net/lisa890608/article/details/8231666

    六、传输方式的分类

    网络通信科根据数据发送方法进行多种分类,分类方法很多,下面列举几种常见的:

    1. 面向有连接型和面向无连接型

    1.1 面向有连接型

    发送数据之前,需要在收发主机之间建立一条通信线路,在通信传输前后,专门进行建立和断开连接的处理,如果与对端之间无法通信,可避免发送无谓的数据

    1.2面向无连接型

    这种类型不要求建立和断开连接,发送端可任何时候发送数据,接收端也不知道自己何时从哪里接受数据,这种情况下,接收端需要时常确认是否收到数据,彼此也不需要确认对方是否存在

    2. 电路交换和分组交换

    软件通信方式大致分为2种:电路交换和分组交换,TCP/IP协议组,采用的就是分组交换

    2.1 电路交换

    电路交换中,交换机主要负责数据的中转处理;计算机与交换机相连接,交换机之间由众多通信线路连接,计算机发送数据时,需要先连接电路,建立连接,即可进行通信,直到连接被断开

    2.2 分组交换

    最初,一台计算机收发信息时会独占整个电路,其他计算机只能等待,且无法预测何时结束通信,为解决这个问题,将发送的数据分为多个数据包,按一定的顺序排列后发送,这就是分组交换

    分组交换中,由分组交互机(路由器)连接通信线路;在每个分组首部写入发送端与接收端地址(即同一条线路同时为多个用户服务),也可以确认区分每个分组的数据目的地,以及它与哪台计算机通信

    分组交换的大致处理过程:发送端将数据分组分给路由器,路由器收到后缓存到自己的缓冲区,然后再转发给目标计算机;因此,分组交换也称为:蓄积交换

    路由器收到收据会按照顺序进行缓存至相应队列,然后以先进先出顺序将其逐一发送(有时会优先发送目标地址较特殊的数据)

    分组交换的缺陷:分组交换中,通信线路共享,因此,通信传输速度可能有差异,根据网络拥堵情况,数据到达目标地址时间长短不同;另外,路由器缓存饱和或溢出时,可能发生数据丢失,无法发送到接收端的情况

    电路交换和分组交换的特点:

    3. 根据接收端数据分类

    3.1 单播

    简单来说就是一对一通信,最早的固定电话就是单播通信的一个典型例子

    3.2 广播

    将消息从一台主机发送给与之相连的其他所有主机;典型例子就是电视播放(将电视信号一齐发送给非特定的多个连接对象)

    3.3 多播

    与广播类似,也是将消息发送给多个相连接的接收主机;不同之处在于多播要限定某一组主机作为接收端

    3.4 任播

    在特定的多台主机中选择一台作为接收端的一种通信方式(从目标主机群中选择一台最符合的主机作为目标主机发送消息,一般被选中的主机将返回一个单播信号,随后发送端只会和这台主机通信)

    在实际的应用中有DNS根域名解析服务器

    PS:几种不同方式的思维逻辑图:

    七、地址

    通信传输中,发送端和接收端可以被视为通信主体,它们由“地址”加以标识,在计算机通信中,每一层协议的地址都不同

    1. 地址的唯一性

    通信地址必须明确的表示一个主体对象,以便确认通信主体,同一个网络中不允许有2个相同的通信主体存在,这就是地址的唯一性

    2. 地址的层次性

    地址总数不多的情况下,有了唯一地址就可以定位相互通信的主体;如果地址总数比较多,那么想要高效的定位通信主体,就需要让地址具有层次性

    比如:MAC和IP地址在标识一个通信主体时都具有唯一性,但只有IP地址具有层次性

    MAC地址由制造商制造的网卡,通过识别制造商号,制造商内部产品编号以及产品通用编号来确保MAC地址的唯一性

    IP地址由网络号和主机号2部分组成,即通信主体IP地址不同,若主机号不同,网络号相同,说明其处于同一个网段

    网络通信中,每个节点都会根据分组数据的地址信息,参考一个发出接口列表,来判断报文应该由哪个网卡发送出去,其中,MAC和IP的区别在于:

    MAC:寻址参考的表叫做地址转发表,其中所记录的实际上MAC地址本身

    IP:寻址参考的表叫做路由控制表,其中所记录的IP地址是集中了之后的网络号(网络号与子网掩码)

    八、网络的构成要素

    搭建一套网络环境需要涉及到很多电缆和网络设备,下面只介绍下连接计算机和计算机的硬件设备:

    搭建网络的主要设备及其作用:

    1. 通信媒介与数据链路

    计算机之间通过电缆相互连接,电缆可以分为很多种,根据数据链路不同,选用的电缆类型也不同,而媒介本身也可被划分为电波、微波等不同类型

    各种数据链路一览:

    传输速率:数据传输过程中,两个设备之间数据流动的物理速度称为传输速率,单位为bps(Bits Per Second,每秒比特数),即单位时间内传输的数据量多少

                  传输速率又称为带宽,带宽越大网络传输能力就越强

    吞吐量:主机之间实际的传输速率称为吞吐量,单位为bps

               吞吐量不仅衡量带宽,同时还有主机的CPU处理能力、网络拥堵程度、报文中数据字段的占有份额(不含报文首部,只计算数据字段本身)等信息

    2. 网卡

    任何计算机连接网络时,必须使用网卡(全称网络接口卡,也称为网络适配器、网卡、LAN卡)

    3. 中继器

    OSI模型中第一层——物理层面上延长网络的设备;由电缆传过来的波信号或光信号,经由中继器波形调整和放大再传给两一个电缆

    一般情况下,中继器两端连接的是相同的通信媒介(有些中继器也可完成不同通信媒介之间的转接工作)

    有些中继器可提供多个端口服务,被称为中继集线器(Hub)或者集线器,每个端口都可称为一个中继器

    4. 网桥/2层交换机

    网桥是在OSI模型第二层——数据链路层面上连接2个网络的设备;它可以识别数据链路层中的数据帧,并将数据帧临时存储于内存,再重新生成一个全新帧转发给相连的另一个网段

    网桥能够连接不同传输速率的数据链路,并且不限制连接网段的个数

    数据链路中有个数据帧叫做FCS,用以校验数据是否正确送达目的地;网桥通过检查该域中的值,将损坏的数据丢弃,此外,还能通过地址自学机制和过滤功能控制网络流量

    地址:MAC地址、硬件地址、物理地址及适配器地址,也就是网络上针对NIC分配的具体地址

    自学式网桥:自行判断是否将数据报文发送给相邻的网段的网桥(记住曾通过自己转发的所有数据帧的MAC地址,并存储到自己的内存表中)

    以太网等网络中经常使用交换集线器(Hub),也属于网桥的一种;交换集线器中连接电缆的端口都能提供类似网桥的功能

    5. 路由器/3层交换机

    路由器:OSI模型第三层——网络层面上连接2个网络、并对分组报文进行转发的设备,根据IP地址进行处理;TCP/IP中网络层地址就成为了IP地址

               路由器可以连接不同的数据链路,它还有分担网络负荷的作用(某些路由器具备一定的网络安全功能)

    6. 4~7层交换机

    4~7层交换机负责处理OSI模型中从传输层至应用层的数据;即以TCP等协议的传输层及其上面的应用层为基础,分析收发数据,并对其进行特定的处理(例如:负载均衡器)

    应用场景:带宽控制、广域网加速器、特殊应用访问、防火墙等

    7. 网关

    网关:OSI模型中负责将从传输层到应用层的数据进行转换和转发的设备;处理传输层及以上的数据

             网关不仅转发数据还对其进行转换,通常会使用一个表示层或应用层网关,在不能直接通信的协议间进行翻译,最终实现通信

    代理服务器:

    使用万维网(www)时,为控制网络流量和处于安全考虑,使用代理服务器(也是网关的一种,称为应用网关)

    使用代理服务器,客户端与服务器之间不需要直接通信,而是从传输层到应用层对数据和访问进行各种控制处理,防火墙就是一种通过网关通信,针对不同应用提高安全性的产品

    代理服务如下图:

    各种设备及其对应网络分层预览图:

    九、现代网络

    1. 网络的构成

    核心网(数据传输核心)+边缘网络(传输节点)+接入层(汇聚层:连接边缘网络的部分)

    2. 互联网通信

    实际的网络构成图:

    3. 移动通信

    移动通信示意图:

    4. 信息发布以及数据中心

    数据中心由大型服务器、存储以及计算机网络构成(某些大型数据中心甚至连接到“主干网”)

    数据中心结构图:

    转载请注明出处,商用请征得作者本人同意,谢谢
  • 相关阅读:
    __getattribute__()、__getattr__()、__setattr__()、__delattr__()
    Python: Catch multiple exceptions in one line (except block)
    Python中的__new__和__init__
    使用sphinx生成Python文档
    Windows下干活儿辅助软件
    Python的Descriptor和Property混用
    Solved: Qt Library LNK 2001 staticMetaObject error
    OS sysbench压力测试
    Oracle 数据库 sysbench 压力测试
    MySQL 数据库 Sysbench压力测试
  • 原文地址:https://www.cnblogs.com/lukelook/p/11209262.html
Copyright © 2011-2022 走看看