第1章 网络通信基础

文章目录

  • 第1章 网络通信基础
    • 1.1 网络类型
      • 1.1.1 局域网与广域网
      • 1.1.2 网络设备
      • 1.1.3 网络拓扑形态
    • 1.2 传输介质
    • 1.3 通信方式
      • 1.3.1 冲突域
      • 1.3.2 双工模式
    • 1.4 网络参考模型
      • 1.4.1 网络通信协议
      • 1.4.2 OSI模型
      • 1.4.3 TCP/IP模型
      • 1.4.4 TCP和UDP
      • 1.4.5 常见协议标准化组织
  • 网络通信,是指终端设备之间通过计算机网络进行的通信。

  • 网络通信的例子:

  • 信息传递的过程

术语 说明
数据载荷 最终想要传递的信息
报文 网络中交换与传输的数据单元
头部 在数据载荷的前面添加的信息段
尾部 在数据载荷的后面添加的信息段
封装 对数据载荷添加头部和尾部,形成新的报文的过程
解封装 去掉报文的头部和尾部,获取数据载荷的过程
网关 提供协议转换、路由选择、数据交换等功能的网络设备,也可以说是去往目的网络的下一跳网络设备
路由器 为报文选择传递路径的网络设备
终端设备 数据通信系统的端设备,作为数据的发送者或接收者

1.1 网络类型

1.1.1 局域网与广域网

网络类型 基本特点 使用的技术
局域网(LAN) 1.覆盖范围一般在几公里之内;
2. 主要作用是把分布距离较近(如:一个家庭内、一座或几座大楼内、一个校园内或厂区内等)的若干终端电脑连接起来
3.不会用到电信运营商的通信线路
令牌总线(Token Bus)
令牌环(Token Ring)
光纤分布式数据接口(FDDI)
以太网(Ethernet)
无线局域网(WLAN)
城域网(MAN) 1.在一个城市范围内所建立的计算机通信网络
2.宽带城域网、教育城域网、市级或省级电子政务专网等。
广域网(WAN) 1.覆盖范围一般在几公里之内,大可至几十,甚至几百或者几千公里,
2.主要作用是吧分布距离较远(如:跨越城市、跨越国家等)
3.会用到电信运营商线路
T1/E1
T3/E3
X.25
HDLC
PPP
ISDN
FR
ATM
SDH

随著技术的发展和市场的选择,只有以太网和无线局域网的以积极地发展和广泛地使用

问题:广域网最终接入点是各大运营商?

不是。一些业务需要对机密性有一定的要求,比如军队、铁路。

1.1.2 网络设备

  1. 交换机: 实现相同网段的互访
  2. 路由器: 实现不同网段的互访

1.1.3 网络拓扑形态

网络拓扑(Network Topology)是指用传输介质(例如双绞线、光纤等)互连各种设备(例如计算机终端、路由器、交换机等)所呈现的结构化布局。

网络 类型 拓扑图 基本特点
星型拓扑 星型拓扑结构是一个中心,多个分节点。多节点与中央节点通过点到点的方式连接。中央节点执行集中式控制策略,因此中央节点相当复杂,负担比其他各节点重的多。
优点:结构简单,连接方便,管理和维护都相对容易,而且扩展性强。网络延迟时间较小,传输误差低。中心无故障,一般网络没问题。
缺点:中心故障,网络就出问题,同时共享能力差,通信线路利用率不高。
环型拓扑 环形拓扑结构是节点形成一个闭合环。环形网中各节点通过环路接口连在一条首尾相连的闭合环形通信线路中,环上任何节点均可请求发送信息。传输媒体从一个端用户到另一个端用户,直到将所有的端用户连成环型。数据在环路中沿着一个方向在各个节点间传输,信息从一个节点传到另一个节点。
这种结构显而易见消除了端用户通信时对中心系统的依赖性。每个端用户都与两个相临的端用户相连,因而存在着点到点链路,但总是以单向方式操作,于是便有上游端用户和下游端用户之称。
优点:节省线缆
缺点:增加新的节点比较麻烦,必须先中断原来的环,才能插入新节点形成新环
总线型拓扑 总线拓扑结构所有设备连接到一条连接介质上。
优点:总线结构所需要的电缆数量少,线缆长度短,易于布线和维护。多个节点共用一条传输信道,信道利用率高。
缺点:总线形网常因一个节点出现故障(如结头接触不良等)而导致整个网络不通,因此可靠性不高。
树形拓扑 树形拓扑从总线拓扑演变而来,层次化的星型拓扑。
优点:结构比较简单,成本低易扩展。
缺点:在这种网络系统中,除叶节点及其相连的链路外,任何一个节点或链路产生的故障都会影响整个网络。
网状拓扑 主要指各节点通过传输线互联连接起来,并且每一个节点至少与其他两个节点相连。网状拓扑结构具有较高的可靠性,但其结构复杂,实现起来费用较高,不易管理和维护,不常用于局域网。
优点:网络可靠性高,一般通信子网任意两个节点交换机之间,存在着两条或两条以上的通信路径。可扩充性好,网络可建成各种形状,采用多种通信信道,多种传输速率。
缺点:网络结构复杂,成本高,不易维护。
混合型拓扑 将两种或几种网络拓扑结构混合起来构成的一种网络拓扑结构,也有的称之为杂合型结构或者组合型的

可高性的是混合型拓扑网络。

1.2 传输介质

  • 双绞线:当今以太网最常见的传输介质,按照抗电磁干扰能力还可以分为:

    • STP-屏蔽双绞线
    • UTP-非屏蔽双绞线
  • 光纤传输,按照功能部件可分为:
    • 光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。
    • 光模块:将电信号与光信号互转的器件,产生光信号。
  • 串口电缆在WAN(Wide Area Network,广域网)中大规模使用,根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。
    无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输。

1.3 通信方式

1.3.1 冲突域

原因:如图是一个10BASE5以太网,每个主机都是用同一根同轴电缆来与其它主机进行通信,因此,这里的同轴电缆又被称为共享介质,相应的网络被称为共享介质网络,或简称为共享式网络。共享式网络中,不同的主机同时发送数据时,就会产生信号冲突的问题,解决这一问题的方法一般是采用载波侦听多路访问/冲突检测技术(Carrier Sense Multiple Access/Collision Detection)。

解决方法:载波侦听多路访问/冲突检测技术(CSMA/CD)

CSMA/CD工作原理:先听后发,边发边听,冲突停发,随机延迟后重发

1.3.2 双工模式

模式 特点 例子
单工模式 信息的流向只能由一方指向另一方 广播通信系统、传统的模拟电视系统
半双工模式 信息不能在两个方向同时进行传递 对讲机
全双工模式 信息可以在两个方想同时进行传递 固定的电话通信系统、移动电话通话系统

1.4 网络参考模型

1.4.1 网络通信协议

问题:什么叫协议?

决定数据的格式和传输的一组规则或者一组惯例

问题:为什么协议分层?

  • 数据以电子信号的形式穿越介质到达正确的计算机,然后转换成最初的形式,以便接收者能够阅读
  • 为了降低网络设计的复杂性,将协议进行了分层设计

1.4.2 OSI模型

定义的组织:ISO

编号 层名 主要功能 PDU(数据单元) 实例
7 应用层 OSI参考模型中最靠近用户的一层,为应用程序提供网络服务 APDU HTTP、Telnet
6 表示层 提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别 PPDU ASCII、EBCDIC JPEG
5 会话层 负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成 SPDU 操作系统/应用读取
4 传输层 提供面向连接或非面向连接的数据传递以及进行重传前的差错检测 TPDU TCP、UDP
3 网络层 提供逻辑地址,供路由器确定路径 报文(数据包) IP
2 数据链路层 将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测 802.3/802.2、HDLC/PPP
1 物理层 在设备之间传输比特流,规定了电平、速度和电缆针脚 比特流 EIA/TIA-232、V3.5/RJ45

程序员侧重应用层

安全工程师侧重传输层

网络工程师侧重网络层与数据链路层

OSI层次设计理念

  • 建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题。
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来
  • 服务:某一层为上一层提供一些什么功能
  • 接口:上一层如何使用下层的服务
  • 协议:如何实现本层的服务
  • 这样各层之间具有很强的独立性,互连网络中各实体采用什么样的
    协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的
    接口就可以了

1.4.3 TCP/IP模型

  1. TCP/IP模型与OSI模型对比

    问题:网络层和数据链路层有什么区别?

    网络层是在基于整个网络来描述报文转发的过程,但是报文在网络中是基于链路逐跳进行转发的,那么链路上如何实现报文的发送,由数据链路层来决定。

    • 应用层:

      • 应用程序:UI用户接口,实现对应用层协议功能操作

      • 应用层协议:根据用户操作实现用户需要使用的功能

      • 问题:应用层协议如何选择传输层协议进行封装?

        如果要求数据能可靠的,有序的,有效率的传输,则使用传输层的TCP协议进行封装。如果要求数据不要求可靠,实时性强,多点传轴,则使用传输层的UDP协议进行封装。

  2. TCP/IP模型数据封装

    TCP封装——>IP封装——>MAC封装——>比特流

  3. TCP/IP常见协议

    • 应用层

      • HTTP(Hypertext Transfer Protocol,超文本传输协议):用来访问在网页服务器上的各种页面。
      • FTP(File Transfer Protocol,文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。
      • DNS(Domain Name Service,域名称解析服务):用于实现从主机域名到IP地址之间的转换。
    • 传输层
      • TCP (Transmission Control Protocol,传输控制协议) :为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。
      • UDP(User Datagram Protocol,用户数据报协议):提供了无连接通信,且不对传送数据包进行可靠性的保证。
    • 网络层
      • IP(Internet Protocol,互联网协议):将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。
      • IGMP(Internet Group Management Protocol,因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
      • ICMP(Internet Control Message Protocol,网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

1.4.4 TCP和UDP

问题:端口号有什么作用?

传输层为应用层协议提供区分和识别的服务应用层协议在运行后,自动监听对应的传输层端口。

源端口:发起TCP连接的主机陌机产生,取值范围1024-65535

目的端口:通常用于标识需要访问的应用层协议,取值范围1-1023

端口号:16bit,取值1-65535己知端口号1-1023分配给应用层协议

未知端口号:1024-65535通常作用源端口

问题:传输层为什么要设计端口号?

提高地址的利用率,实现一个IP地址可以提供多种不同的应用层服务,并实现唯一TCP会话的区分。

问题:如何区分一个报文为同一个报文?

通过**五元组(SIP+DIP+Dport+TCP/UDP)**来区分报文:通过五元组可以识别报文属于那个TCP或者UOP会话,并正确提交给应用层协议处理

  1. 报文格式

    TCP头部报文格式

        0                   1                   2                   30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-------------------------------+-------------------------------+|          Source Port          |       Destination Port        |+-------------------------------+-------------------------------+|                        Sequence Number                        |+---------------------------------------------------------------+|                    Acknowledgment Number                      |+-------+-----------+-+-+-+-+-+-+-------------------------------+|  Data |           |U|A|P|R|S|F|                               || Offset| Reserved  |R|C|S|S|Y|I|            Window             ||       |           |G|K|H|T|N|N|                               |+-------+-----------+-+-+-+-+-+-+-------------------------------+|           Checksum            |         Urgent Pointer        |+-------------------------------+---------------+---------------+|                    Options                    |    Padding    |+-----------------------------------------------+---------------+|                             data                              |+---------------------------------------------------------------+
    

    Source Port: 源端口,标识哪个应用程序发送。长度为16比特。
    Destination Port目: 目的端口,标识哪个应用程序接收。长度为16比特。
    Sequence Number: 序号字段。TCP链接中传输的数据流每个字节都编上一个序号。序号字段的值指的是本报文段所发送数据的第一个字节的序号。长度为32比特。
    Acknowledgment Number: 确认序列号,是期望收到对方下一个报文段数据的第1个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加1。只有Ack标识为1,此字段有效。长度为32比特。
    Header Length: 头部长度,指出TCP报文头部长度,以32比特(4字节)为计算单位。若无选项内容,则该字段为5,即头部为20字节。
    Reserved: 保留,必须填0。长度为6比特。
    Control bits: 控制位,包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段。
    Window: 窗口TCP的流量控制,这个值表明当前接收端可接受的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特。
    Checksum: 校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证。在计算检验和时,要包括TCP头部和TCP数据,同时在TCP报文段的前面加上12字节的伪头部。长度为16比特。

    Urgent: 紧急指针,只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。长度为16比特。
    Options: 选项字段(可选),长度为0-40字节。

            0              15 16             31+-----------------+-----------------+| Source Port     |Destination Port |+-----------------+-----------------+|                 |                 ||     Length      |    Checksum     |+-----------------+-----------------+|                                   ||          data octets ...          |+----------------------------------+
    

    Source Port: 源端口,标识哪个应用程序发送。长度为16比特。
    Destination Port: 目的端口,标识哪个应用程序接收。长度为16比特。
    Length: 该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。
    Checksum: 覆盖UDP头部和UDP数据的校验和,长度为16比特。

  2. TCP三次握手

    • 由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。

    • 初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0 ;接收方(图中PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。

    • 初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1;

    • PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立。

  3. TCP的序列号与确认序列号

    • 假设PC1要给PC2发送一段数据,传输过程如下:

      1. PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。
      2. PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将TCP报文发送出去。
      3. PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12)
      4. PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送。
    • 为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认。

  4. TCP窗口滑动机制

    1. 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。
    2. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。
    3. 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
    4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。
    5. 发送方根据接收方当前的Window大小发送相应数量的数据。
  5. TCP的关闭 - 四次挥手

    TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。如图所示:

    1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;
    2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
    3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
    4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

1.4.5 常见协议标准化组织

  • IETF(Internet Engineering Task Force)

    • 负责开发和推广互联网协议(特别是构成TCP/IP协议族的协议)的志愿组织,通过RFC发布新的或者取代老的协议标准。
  • IEEE(Institute of Electrical and Electronics Engineers)

    • IEEE制定了全世界电子、电气和计算机科学领域30%左右的标准,比较知名的有IEEE802.3(Ethernet)、IEEE802.11(WiFi)等。
  • ISO(International Organization for Standardization)

    • 在制定计算机网络标准方面,ISO是起着重大作用的国际组织,如OSI模型,定义于ISO/IEC 7498-1
    • 负责开发和推广互联网协议(特别是构成TCP/IP协议族的协议)的志愿组织,通过RFC发布新的或者取代老的协议标准。
  • IEEE(Institute of Electrical and Electronics Engineers)

    • IEEE制定了全世界电子、电气和计算机科学领域30%左右的标准,比较知名的有IEEE802.3(Ethernet)、IEEE802.11(WiFi)等。
  • ISO(International Organization for Standardization)

    • 在制定计算机网络标准方面,ISO是起着重大作用的国际组织,如OSI模型,定义于ISO/IEC 7498-1

文章目录

  • 第1章 网络通信基础
    • 1.1 网络类型
      • 1.1.1 局域网与广域网
      • 1.1.2 网络设备
      • 1.1.3 网络拓扑形态
    • 1.2 传输介质
    • 1.3 通信方式
      • 1.3.1 冲突域
      • 1.3.2 双工模式
    • 1.4 网络参考模型
      • 1.4.1 网络通信协议
      • 1.4.2 OSI模型
      • 1.4.3 TCP/IP模型
      • 1.4.4 TCP和UDP
      • 1.4.5 常见协议标准化组织

第1章 网络通信基础相关推荐

  1. 软考-中级-网络工程师-笔记-第2章-数据通信基础

    软考-中级-网络工程师-笔记-第1章-计算机网络概论 第2章 数据通信基础 2.1 数据通信的基础概念 模拟信号-连续的 数字型号-离散到 来奎斯特 香农定理 2.2 信道特性 2.2.1 信道带宽 ...

  2. 【正点原子Linux连载】第十一章 网络编程 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  3. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

  4. 通信网络基础期末复习-第三章-网络的时延分析

    文章目录 第3章 网络的时延分析 3.1 Little定理 3.2 M/M/m型排队系统 3.2.1 M/M/1排队系统 M/M/1排队系统的例题 3.2.2 M/M/m排队系统 3.3 M/G/1型 ...

  5. 计算机网络的体系结构与协议基本概念,计算机网络技术基础-第3章网络体系结构与协议.ppt...

    <计算机网络技术基础-第3章网络体系结构与协议.ppt>由会员分享,可在线阅读,更多相关<计算机网络技术基础-第3章网络体系结构与协议.ppt(19页珍藏版)>请在装配图网上搜 ...

  6. 计算机网络在线测试第二章,进行测验:-第2章-网络体系结构与网络协议测试.doc...

    进行测验:-第2章-网络体系结构与网络协议测试.doc 142计算机网络 142-301214-J01062-1 作业 进行测验 第2章 网络体系结构与网络协议测试进行测验 第2章 网络体系结构与网络 ...

  7. CSAPP:第十一章 网络编程

    CSAPP:第十一章 网络编程 11.1 客户端服务器模型11.2 全球IP因特网11.3 套接字接口 11.1 客户端服务器模型   每个网络应用都是基于客户端-服务器模型.采用这个模型,一个应用是 ...

  8. 信安教程第二版-第12章网络安全审计技术原理与应用

    第12章 网络安全审计技术原理与应用 12.1 网络安全审计概述 227 12.1.1 网络安全审计概念 227 12.1.2 网络安全审计相关标准 227 12.1.3 网络安全审计相关法规政策 2 ...

  9. 信安教程第二版-第11章网络物理隔离技术原理与应用

    第11章 网络物理隔离技术原理与应用 11.1 网络物理隔离概述 216 11.1.1 网络物理隔离概念 216 11.1.2 网络物理隔离安全风险 216 11.2 网络物理隔离系统与类型 217 ...

最新文章

  1. 杨强:人工智能在企业的落地是一门大学问
  2. Kotlin项目实践指南(上)
  3. cropper.js 图像旋转问题_JavaScript开源良心插件,纯前端网页图片剪裁插件——cropperjs...
  4. 【 MATLAB 】数字信号处理中的几个常用序列产生的MATLAB代码
  5. 细分tf.multiply()、tf.matmul()、tf.scalar_mul()函数
  6. XLS封装成EXE制作全攻略
  7. node创建web静态服务
  8. java单例模式实例_Java设计模式之单例模式 通俗易懂 超详细 【内含案例】
  9. ASP.NET Core2.2 和2.1 版本中对cookie的设置和存储
  10. [转载] SimpleHTTPServer解释:如何使用Python发送文件
  11. C/C++的memset函数的说明和使用
  12. VS真难用:好好的编译工程,换个机器完全不能编译;换高版本还是不能编译
  13. Nacos集群(一)节点启动初始化源码解析
  14. Fiddler的安装和使用教程(详细)
  15. laravel框架简单总结
  16. 操作系统课程设计任务书
  17. 线阵相机参数选择 照明方式
  18. Cheat Engine 在mac最新系统无法安装的解决办法
  19. 婚礼纪 java面试
  20. Linux-curl指令

热门文章

  1. 【一键检测】这么高效的PCB检测工具,早点知道就好了
  2. 英语语法总结11(并列句、省略)
  3. 使用python执行curl命令
  4. 华为路由器实现负载均衡和冗余备份
  5. 斯图金是如何发明电磁铁的?
  6. Python中生成器是什么?
  7. 星巴克“奢侈”的用户体验思维模式
  8. 163的汉芯专题忒牛了
  9. matlab自动排课,matlab数学建模排课
  10. 美年大健康董事长俞熔:发现新赛道、孵化好赛马