精华内容
下载资源
问答
  • 网络通信原理_互联网通信协议

    千次阅读 2019-05-23 18:19:02
    网络通信原理 Internet实际上就是统一的标准,称为互联网协议(Internet Protocol Suite)。 互联网协议的功能:定义计算机如何接入Internet,以及接入internet的计算机通信的标准。 互联网协议按照功能不同分为...

    网络通信原理

    Internet实际上就是统一的标准,称为互联网协议(Internet Protocol Suite)。

    互联网协议的功能:定义计算机如何接入Internet,以及接入internet的计算机通信的标准。

    互联网协议按照功能不同分为tcp/ip四层tcp/ip五层osi七层 :

    用户接触的是最上面的应用层,越往下越接近硬件。

    每层运行常见物理设备 :

    开放系统互连参考模型——七层模型

    开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层数据链路层网络层传输层、会话层、表示层应用层(物数网传会表应)

    物理层

    物理层(Physical Layer)是计算机网络OSI模型中最低的一层。物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性。简单的说,物理层确保原始的数据可在各种物理媒体上传输。

    简单理解:硬件基础,包括网卡、光纤等;主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0 。

    数据链路层

    数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思

    数据链路层的功能:定义了电信号的分组方式(以太网协议、mac地址、广播 )

    数据链路层实现的三大功能分别为:(1) 封装成帧(2) 透明传输(3) 差错控制

    网络层

    作用:提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。相当于发送邮件时需要地址一般重要。由于TCP/IP协议体系中的网络层功能由IP协议规定和实现,故又称IP层。

    传输层

    传输层的主要功能: 为端到端连接提供可靠的传输服务,为端到端连接提供流量控制,差错控制,服务质量(Quality of Service,QoS)等管理服务,具有传输层功能的协议:TCP 、SPX 、NetBIOS

    会话层

    会话层(Session Layer)负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。 主要为两个会话层实体进行会话(Session),而进行的对话连接的管理服务。

    表达层

    表达层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式。 为不同终端的上层用户提供数据和信息正确的语法表示变换方法。如文本文件ASCII格式和EBCDIC,用于表示数字的1S或2S补码表示形式。

    应用层

    应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。

    TCP/IP五层模型

    五层模型实际上把OSI七层简化:将应用层、表示层和会话层 合并为应用层

    TCP/IP协议体系四层模型

    TCP/IP体系结构的优点:

    1. 结构简化,7层变成4层,但是功能没有减少

    2. 每一层独立有联系,独立是指那一层出现问题不会影响到其它层的工作,联系是因为上层又使用下层协议提供的服务。

    1、数据链路层

    功能:实现了网卡接口的网络驱动程序,以处理数据在物理媒介(如以太网、令牌环等)上的传输。

    常用协议:

    (1)ARP(地址解析协议):它实现IP地址到物理地址(通常是MAC地址,通俗的理解就是网卡地址)的转换。

    (2)RARP(逆地址解析协议):顾名思义,它和ARP是相反的,它是实现从物理地址到IP地址的转换。

    那有人就会问它们的用途是什么呢???

    ARP用途:网络层使用IP地址寻找一台机器,而数据链路层则是使用物理地址寻找一台机器,因此网络层必须先将目标机器的IP地址转化成物理地址,才能使用数据链路层提供的服务。

    RARP用途:RARP协议仅用于网络上的某些无盘工作站,因为缺少储存设备,无盘工作站无法记录自己的IP地址,然而通过RARP就可以看到从物理地址到IP地址的映射。

    2、网络层

    功能:实现数据包的选路和转发。

    常用协议:

    (1)IP协议(英特网协议)据数据包的目的IP地址来决定如何将它发送给目标主机。如果数据包不能直接发送给目标主机,那么IP协议为它寻找一个合适的下一跳路由器,将数据包交给路由器来转发,多次之后数据包将到达目标主机,或者因发送失败而被丢弃。

    (2)ICMP协议是网络层的另一个重要协议,它是IP协议的重要补充,主要用于检测网络连接。

    8位类型:将ICMP报文分为两大类:一类是差错报文,比如目标不可达(类型值为3)和重定向(类型值为5);另一类是查询报文,用来查询网络信息。

    有的ICMP报文还用8位代码字段细分不同的条件。比如代码值0表示网络重定向,代码值1表示主机重定向。

    16位校验和:对整个报文(包括头部和内容部分)进行循环冗余校验(CRC)。

    注意:ICMP协议并非严格意义上的网络层协议,因为它使用了处于同一层的IP协议提供的服务,而一般来说,上层协议使用下层协议提供的服务。

    3、传输层

    功能:为两台主机上的应用程序提供端到端的通信。与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。

    主要协议:

    (1)TCP协议(传输控制协议):为应用层提供可靠的、面向连接的和流式服务。

    (2)UDP协议(用户数据报协议):为应用层提供不可靠的、无连接的和数据报服务。(TCP和UDP协议的详解和区别将在下一篇详讲)

    (3)SCTP协议(流控制传输协议)它是为在英特网上传输电话信号而设计的,这里不再细说。

    4、应用层

    功能:负责处理应用程序的逻辑,比如文件传输,名称查询和网络管理等。

    注意:数据链路层、网络层、传输层复制处理网络通信 细节,所以这些部分必须稳定且高效,因此它们都在内核空间实现(如上图二),而应用层在用户空间中实现,因为它负责众多逻辑,在内核中实现的话,则会使内核变得非常庞大。也有少数服务器程序是在内核中实现,这样代码就不用在用户空间和内核空间中来回切换(主要是数据的复制)提高了工作效率。

    常用协议:

    (1)OSPF(开放最短路径优先)协议:是一种动态路由更新协议,用于路由器之间的通信,以告知对方各自的路由信息。

    (2)DNS(域名服务)协议:提供机器域名到IP地址的转换。

    (3)telnet协议是一种远程登陆协议,使我们能在本地完成远程任务。

    (4)HTTP协议(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。

    数据传输过程

    数据封装以后:

    一个数据从一台主机应用程序上发出后,传输层根据协议选择传输方式,如选择TCP协议,则在数据前面加上自己的头部,到达网络层后,网络层又选择协议,再加上自己的头部信息交给下一层,再到数据链路层后加上以太网头部后成为一个以太网帧,经过路由转发,到达目标主机后有一层层的根据头部信息选择协议,然后去掉各自的头部,一层层的交给上一层,最终到达目标主机的应用程序上。

    通信原理之TCP/IP基本概念 (二)

    一、为什么会有TCP/IP协议

          在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。

         但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。

    二、TCP/IP协议分层

          提到协议分层,我们很容易联想到ISO-OSI的七层协议经典架构,但是TCP/IP协议族的结构则稍有不同。如图所示

          TCP/IP协议族按照层次由上到下,层层包装。最上面的就是应用层了,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次(不要告诉我你没用过udp玩星际)。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据(后面会讲到)以确定传输的目标。第四层是叫数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。再往下则是硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些我们就不用关心了,我们也不做网卡),所以有些书并不把这个层次放在tcp/ip协议族里面,因为它几乎和tcp/ip协议的编写者没有任何的关系。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把tcp/ip协议族称为tcp/ip协议栈。

    三、一些基本的常识

           在学习协议之前,我们应该具备一些基本知识。

    • 1、互联网地址(ip地址)

      网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,我们常用的是B类地址。具体的分类请参考其他文档。需要注意的是IP地址是网络号+主机号的组合,这非常重要。

    • 2、域名系统

      域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成IP地址的服务。

    • 3、RFC

      RFC是什么?RFC就是tcp/ip协议的标准文档,在这里我们可以看到RFC那长长的定义列表,现在它一共有4000多个协议的定义,当然,我们所要学习的,也就是那么十几个协议而已。

    • 4、端口号(port)

      注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。

    • 5、应用编程接口

      现在常用的编程接口有socket和TLI。而前面的有时候也叫做“Berkeley socket”,可见Berkeley对于网络的发展有多大的贡献。

    展开全文
  • 通信原理概述

    万次阅读 多人点赞 2018-09-03 14:21:04
    1.通信原理概述   1.1无线通信概述 1.1.1应用场景 传统应用场景 固定信息:烽火边防 文字信息:信鸽 交互方式:旗语(不受干扰) 现代应用场景 1895年马可尼..... 从传播距离看:远距离通信(卫星)、中...

    1.通信原理概述

     

    1.1无线通信概述

    1.1.1应用场景

    传统应用场景

    固定信息:烽火边防

    文字信息:信鸽

    交互方式:旗语(不受干扰)

    现代应用场景

    1895年马可尼.....

    从传播距离看:远距离通信(卫星)、中距离通讯(电话)、近距离通讯(对讲机)

    从传播内容看:语音(无线广播方式、移动通信)、文本和图片(互联网)、视频(电视广播、视频电话)

     

    1.1.2通信网络框架

    发送端、传输介质、接收端

    信源-->发送器(同步)-->信道(存在噪声源)-->接收器(同步)-->信宿

     

    1.1.3通信传输介质信道介绍

    有线信道(更快更可靠)

    无线信号(长波、短波、微波、红外线)例如在900M的频谱上可以通过GSM,UMTS,LTE技术承载传输

    差异和关联:

    传输介质:有线一般通过光纤传播、无线通过微波、wifi、蓝牙、无线光纤、无线蜂窝系统

    抗干扰性,无线比有线差很多,可能存在波动,有线的抗干扰能力强,比较稳定。

    移动性:有线移动性低,无线移动性好

    施工难度:各有优缺点,无线的卫星部署难度大,有线需要经常挖路

    扩展性:无线一旦发射机与接收机部署完毕就很容易扩展

     

    1.1.4通信流程

    电路交换:在通信之前就建立物理通道;面向连接,在通信前先建立一条连接电路,在通信结束后实时拆除电路;独占性,不管电路是否空闲,均不允许其他用户使用;实时性,信号经电路交换几乎没有时延;优点,传输时延小,抖动小;缺点,只能支持单一速率;主要用在通话过程中

    分组交换:是一种存储转发方式,先把消息数据按一定长度分组,根据交换网的状态,选择空闲路由;是虚电路,在收发端建立的不是专用的物理电路,只知道收发端,中间如何走的是不确定的;灵活的带宽分配;统一业务内容不同路径传递;资源共享;报头处理,到存储转发的节点上就会解这个头;缓存机制

     

    1.2无线通信原理基础

    1.2.1通信系统模型

    通信指信息传输,也就是信源和信宿通过信道收发信息的过程

    信源发出信息,发信机负责将信息转换成适合在信道上传输的信号,收信机将信号转化成信息发送给信源

    对于每一个终端来讲,既是信源又是信宿

    信源是信息的发送者,负责将原始的信号转化为电信号,信宿相反。

     

    1.2.2信道

    信道:信息的传输通道

    发信机:接收信源发送的信息,进行编码和调制,将信息转化成适合在信道上传输的信号,发送到信道上

    收信机:负责从信道上接收信号,进行解调和译码,将信息恢复出来发送给信宿

    不是所有频率的信号都可以通过信道传输,频率响应决定了哪些可以通过,可以通过的频率范围大小是信道的带宽

    香农公式:信道容量,就是信道的最大传输速率,可通过香农公式计算到

    C=B*\log _{_{2}}(1+\frac{S}{N})

    C 信道容量,单位bps

    B 信号带宽,单位Hz

    S 信号平均功率, 单位W

    N 噪声平均功率,单位W

    S/N 信噪比

    提升信道容量可以使用比较大的带宽,降低信噪比;也可以使用比较小的带宽,升高信噪比

    dB 分贝 , 10*\log{_{10}}(\frac{S}{N})的单位是db

     

    1.2.3信号变换

    发信机进行的信号处理:信源编码、信道编码、交织、脉冲成形、调制

    收信机进行的信号处理:解调、采样判决、去交织、信道译码、信源译码

    信源编码:模拟信号-->模数转换-->压缩编码(去除冗余信息)-->数字信号

    例如GSM(全球移动通信系统,是应用最广泛的移动电话标准)先通过PCM(脉冲编码调制,是数字通信编码方式之一)编码将模拟语音信号转化成二进制数字码流,再利用RPE-LPT(规则脉冲激励-长期预测编码)算法对其进行压缩

    信道编码:增加冗余信息以便在接收端进行检错和纠错,解决信道和噪声和干扰导致的误码问题,一般只能纠正零星的错误,对于连续的误码无能为力

    交织:为了解决连续误码导致的信道译码出错问题,通过交织将信道编码之后的数据顺序按照一定规律打乱,到了接收端在信道译码之前再通过交织将数据顺序复原,这样连续的误码到了接收端就变成了零星的误码,信道译码就可以正确纠错了

    脉冲成形:为了减小带宽需求,需要将发送数据转换成合适的波形,这就是脉冲成形(矩形脉冲要求的信道会很宽,主要原因是矩形脉冲的竖边是垂直的,想要达到这一点要很高的频率,脉冲成形并不要求是垂直的,所以频率要求也降低了)

    调制:将信息承载到满足信号要求的高频载波信号的过程

    以电话线为例,频率低于3400Hz的信号可以通过,人的声音本身就不超过3400Hz,所以不需要调制;但是对于其他的数据可能会超过该频率,需要MODEM调制解调器,在发送端使用调制功能,接收端使用解调功能。可以用一条电话线的低频部分传送语音,高频部分传送数据。ADSL就是这么做的,利用0-4kHz传输话音,23kHz-138kHz传输上行数据,138kHz-1.1MHz传输下行数据

     

    1.2.4复用和多址技术

    在一条信道上只传输一路数据的情况下,只需要经过信源编码、信道编码、交织、脉冲成形、调制之后就可以发送到信道上进行传输了;但如果同事传递多条数据就需要复用和多址技术

    复用技术:一条信道上同时传输多路数据的技术(TDM时分复用、FDM频分复用、CDM码分复用)

    ADSL使用了FDM的技术,语音的上行和下行占用了不同的带宽

    多址技术:在一条线上同时传输多个用户数据的技术,在接收端把多个用户的数据分离(TDMA时分多址、FDMA频分多址、CDMA码分多址)多路复用技术是多址技术的基础,多址技术还会关注到信道资源的分配算法,walsh码的分配算法

     

    展开全文
  • 网络通信原理

    千次阅读 多人点赞 2019-06-02 17:13:06
    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序...网络通信原理 2.1 互联网的本质就是一系列的网络协议 一台硬件设备有了操作系统,然后装上软件你就可以...

    一.操作系统基础

        操作系统:(Operating System,简称OS)是管理和控制计算机硬件软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。

    注:计算机(硬件)->os->应用软件

     

    二.网络通信原理

    2.1 互联网的本质就是一系列的网络协议

    一台硬件设备有了操作系统,然后装上软件你就可以正常使用了,然而你也只能自己使用。像这样,每个人都拥有一台自己的机器,然而彼此孤立。

    如何能让大家一起玩耍呢?------通过internet

    然而internet为何物呢?

    其实两台计算机之间通信两个人打电话之间通信的原理是一样的(中国有很多地区,不同的地区有不同的方言,为了全中国人都可以听懂,大家统一讲普通话)。

    普通话属于中国国内人与人之间通信的标准,那如果是两个国家的人交流呢?

    问题是,你不可能要求一个人/计算机掌握全世界的语言/标准,于是有了世界统一的通信标准:英语。

     

    结论英语成为世界上所有人通信统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是

    一系列统一的标准,这些标准称之为互联网协议互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite)。

    互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准

     

    2.2 osi七层协议

    互联网协议按照功能不同分为osi七层tcp/ip五层tcp/ip四层

     

    每层运行常见物理设备

     

    2.3 tcp/ip五层模型讲解

    我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议就理解了整个互联网通信的原理

    首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解。每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件。

    2.3.1 物理层

    物理层由来:上面提到,孤立的计算机之间要想一起玩,就必须接入internet,言外之意就是计算机之间必须完成组网。

    物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0。利用光缆、电缆、双绞线、无线电波等把计算机连接起来。

    2.3.2 数据链路层

    数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思。

    数据链路层的功能定义了电信号的分组方式

    以太网协议:

    早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

    ethernet规定:

    • 一组电信号构成一个数据包,叫做‘帧’。
    • 每一数据帧分成:报头head数据data两部分。
           head                        data                             

     

     

    head包含:(固定18个字节)

    • 发送者/源地址,6个字节。
    • 接收者/目标地址,6个字节。
    • 数据类型,6个字节。

    data包含:(最短46字节,最长1500字节)

    • 数据包的具体内容

    head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

     

    mac地址:

    head中包含的源和目标地址由来:ethernet规定接入internet设备必须具备网卡,发送端和接收端的地址便是指网卡的地址即mac地址。

    mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

     

    广播:

    有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址

    ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼

     

    2.3.3 网络层

    网络层由来:有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难。

    上图结论:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送如果不是就采用路由的方式(向不同广播域/子网分发数据包)mac地址是无法区分的,它只跟厂商有关

    网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址

    IP协议:

    • 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示。
    • 范围0.0.0.0-255.255.255.255。
    • 一个ip地址通常写成四段十进制数,例:172.16.10.1。

    ip地址分成两部分

    • 网络部分:标识子网
    • 主机部分:标识主机

    注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网。

    例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网。

    子网掩码

    所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

     

    知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

     

    比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,

    172.16.10.1:10101100.00010000.00001010.000000001

    255255.255.255.0:11111111.11111111.11111111.00000000

    AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0

     

    172.16.10.2:10101100.00010000.00001010.000000010

    255255.255.255.0:11111111.11111111.11111111.00000000

    AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0

     

    结果都是172.16.10.0,因此它们在同一个子网络

    总结一下IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络

     

    ip数据包

    ip数据包也分为headdata部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分

    head:长度为20到60字节

    data:最长为65,515字节。

    而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。

     

    以太网头                ip 头                                     ip数据                                

     

     

     

    ARP协议

    arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议。

    arp协议功能广播的方式发送数据包,获取目标主机的mac地址。

     

    协议工作方式:每台主机ip都是已知的

    例如:主机172.16.10.10/24访问172.16.10.11/24

    一:首先通过ip地址和子网掩码区分出自己所处的子网。

    场景 数据包地址  
    同一子网 目标主机mac,目标主机ip  
    不同子网 网关mac,目标主机ip  

     

     

     

     

    二:分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)。

      源mac 目标mac 源ip 目标ip 数据部分
    发送端主机 发送端mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24 数据

     

     

     

    三:这个包会以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac

     

    2.3.4 传输层

    传输层的由来:网络层的ip帮我们区分子网以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

    传输层功能建立端口到端口的通信

    补充:端口范围0-65535,0-1023为系统占用端口。

     

    tcp协议:

    可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

    以太网头 ip 头               tcp头               数据                                                    

     

     

    udp协议:

    不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

    以太网头 ip头                      udp头                            数据                                           

     

     

    tcp报文

    tcp三次握手和四次挥手

     

    2.3.5 应用层

    应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式 。

    应用层功能规定应用程序的数据格式

    例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层

     

     

    2.3.6 socket

            我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程

    能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信

    socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

     

    三.网络通信实现

    想实现网络通信每台主机需具备四要素:

    • 本机的IP地址
    • 子网掩码
    • 网关的IP地址
    • DNS的IP地址

    获取这四要素分两种方式:

    • 1.静态获取:即手动配置
    • 2.动态获取:通过dhcp获取
    以太网头 ip头 udp头 dhcp数据包

     

     

    (1)最前面的”以太网标头”,设置发出方(本机)的MAC地址接收方(DHCP服务器)的MAC地址前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

     

    (2)后面的”IP标头”,设置发出方的IP地址接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0接收方的IP地址设为255.255.255.255

     

    (3)最后的”UDP标头”,设置发出方的端口接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口接收方是67端口

    这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255于是DHCP服务器知道”这个包是发给我的”,而其他计算机就可以丢弃这个包

    接下来,DHCP服务器读出这个包的数据内容,分配好IP地址发送回去一个”DHCP响应”数据包。这个响应包的结构也是类似的,以太网标头MAC地址双方的网卡地址IP标头IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分

    新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

     

    四.网络通信流程

    1.本机获取

    • 本机的IP地址:192.168.1.100
    • 子网掩码:255.255.255.0
    • 网关的IP地址:192.168.1.1
    • DNS的IP地址:8.8.8.8

    2.打开浏览器,想要访问Google,在地址栏输入了网址:www.google.com。

    3.dns协议(基于udp协议)

     

    13台根dns:

    A.root-servers.net198.41.0.4美国
    B.root-servers.net192.228.79.201美国(另支持IPv6
    C.root-servers.net192.33.4.12法国
    D.root-servers.net128.8.10.90美国
    E.root-servers.net192.203.230.10美国
    F.root-servers.net192.5.5.241美国(另支持IPv6
    G.root-servers.net192.112.36.4美国
    H.root-servers.net128.63.2.53美国(另支持IPv6
    I.root-servers.net192.36.148.17瑞典
    J.root-servers.net192.58.128.30美国
    K.root-servers.net193.0.14.129英国(另支持IPv6)
    L.root-servers.net198.32.64.12美国
    M.root-servers.net202.12.27.33日本(另支持IPv6)

     

    域名定义:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html

    顶级域名:以.com,.net,.org,.cn等等属于国际顶级域名,根据目前的国际互联网域名体系,国际顶级域名分为两类:类别顶级域名(gTLD)和地理顶级域名(ccTLD)两种。类别顶级域名是                    以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等结尾的域名,均由国外公司负责管理。地理顶级域名是以国家或地区代码为结尾的域名,如"CN"代表中国,"UK"代表英国。地理顶级域名一般由各个国家或地区负责管理。

    二级域名:二级域名是以顶级域名为基础的地理域名,比喻中国的二级域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com.
    一般来说,二级域名是域名的一条记录,比如alidiedie.com是一个域名,www.alidiedie.com是其中比较常用的记录,一般默认是用这个,但是类似*.alidiedie.com的域名全部称作是alidiedie.com的二级

     

    4.HTTP部分的内容,类似于下面这样:

    GET / HTTP/1.1
    Host: www.google.com
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: zh-CN,zh;q=0.8
    Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
    Cookie: … …

    我们假定这个部分的长度为4960字节,它会被嵌在TCP数据包之中。

     

    5 TCP协议

    TCP数据包需要设置端口接收方(Google)的HTTP端口默认是80发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。

    TCP数据包标头长度为20字节,加上嵌入HTTP的数据包,总长度变为4980字节

     

    6 IP协议

    然后,TCP数据包再嵌入IP数据包IP数据包需要设置双方的IP地址,这是已知的,发送方192.168.1.100(本机接收方172.194.72.105(Google

    IP数据包标头长度20字节,加上嵌入的TCP数据包,总长度变为5000字节

     

    7 以太网协议

    最后,IP数据包嵌入以太网数据包以太网数据包需要设置双方的MAC地址发送方本机的网卡MAC地址接收方网关192.168.1.1的MAC地址(通过ARP协议得到)

    以太网数据包的数据部分,最大长度为1500字节,而现在的IP数据包长度为5000字节。因此,IP数据包必须分割成四个包。因为每个包都有自己的IP标头(20字节),所以四个包的IP数据包的长度分别为1500、1500、1500、560

     

    8 服务器端响应

    经过多个网关的转发Google的服务器172.194.72.105收到了这四个以太网数据包

    根据IP标头的序号Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的”HTTP请求”接着做出”HTTP响应”,再用TCP协议发回来。

    本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。

     

     

     

    展开全文
  • Socket通信原理

    万次阅读 多人点赞 2018-11-03 12:12:58
    在之前的认识TCP/IP协议中了解了OSI七层网络模型和TCP/IP四层模型,和TCP/IP中通信的三次握手、四次挥手,还用Socket写过聊天室的通信,但直到昨天才发现自己对Socket的通信原理的理解是模糊的,所以打算再梳理一下...

    在之前的认识TCP/IP协议中了解了OSI七层网络模型和TCP/IP四层模型,和TCP/IP中通信的三次握手、四次挥手,还用Socket写过聊天室的通信,但直到昨天才发现自己对Socket的通信原理的理解是模糊的,所以打算再梳理一下。

    OSI七层网络模型和TCP/IP四层模型

    先来看下OSI七层网络模型和TCP/IP四层模型有何区别,其实本质上他们是一样的,都是对一个网络通信过程的分层模型,只是分层时候侧重点有所不同。

    我们知道TCP/IP协议是互联网协议(簇)的统称,对网络通信制定了一系列相应的规则,是通信的基础,它提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。而OSI模型是开放式系统互联通信参考模型。因为OSI是是先有模型后有进行实践,所以它是一个完整的宏观模型,包括了硬件层(物理层),当然也包含了很多协议(比如DNS解析协议等),而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型对其分层的。TCP/IP更加侧重的是互联网通信核心(也是就是围绕TCP/IP协议展开的一系列通信协议)的分层。

    二者最大的不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络协议。

     

    Socket是什么?

    说了那么多,开始进入正题吧。下面是TCP/IP的四层模型,但为什么我们没有看到Socekt呢?它应该把放在哪一层?

     

    socket是在应用层和传输层之间的一个抽象层,socket本质是编程接口(API),它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。TCP/IP只是一个协议栈,必须要具体实现,同时还要提供对外的操作接口(API),这就是Socket接口。通过Socket,我们才能使用TCP/IP协议。

      JDK的java.net包下有两个类:Socket和ServerSocket,在Client和Server建立连接成功后,两端都会产生一个Socket实例,操作这个实例,完成所需的会话,而我们就通过这些API进行网络编程,不需要去关心底层的实现了。 Socket连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

     

    Socket的工作原理

     我们只是会用Socekt进行通信的编程了,但socket通信流程究竟是什么样的呢?废话不扯,还是直接上张图来理解吧。

    socket是"打开—读/写—关闭"模式的实现。

    先来看看客户端和服务器端的实现吧,来分析一下具体步骤!

    客户端:

    服务器端:

     

    1.服务器端先初始化Socket。( listenfd 从名称看就是为了要监听而创建的socket描述符)

    那bind 是干嘛?是为了声明说我要占用这个端口了, 你们都别用了。所以2.绑定端口(bind)

    接着 3.listen函数才是真正开始对端口监听了。  

    接下来是个死循环啊,啊啊也对,因为服务器端需要一直提供服务,只能坐以待命。那这个accept是干啥的呢?

    4.调用accept阻塞,等待客户端来连接我。

    为什么使用了listenfd , 然后返回了一个新的connfd ?  你还记得服务器要应付很多的客户端发起的连接, 所以它一定得把各个客户端区分开,怎么区分呢?  那只有用一个新的socket来表示, 可以看到后面接受/发送(写和读)消息的操作都是基于connfd 来做的。   至于之前的listenfd , 它只起到一个大门的作用了, 意思是说,欢迎敲门, 进门之后我将为你生成一个独一无二的socket描述符!(引子张大胖的Socekt,o((⊙﹏⊙))o.)

    这时有个客户端初始化一个Socket,然后5.该客户端连接服务器(connect),连接成功则建立连接。此时服务器的accept 相当于和客户端的connect 一起完成了TCP的三次握手 !

    连接建立以后6.客户端发送发送数据请求     7.服务器接收请求并处理,然后回应数据给客户端   8.客户端读取到的数据,最后关闭连接。 这样一次完整的交互就结束了。

     

    还有一个问题就是socket指的是 (IP, Port),   现在我已经有了一个listenfd 的socket, 端口是80  然后每次客户端发起连接还要创建新的connfd,  因为80端口已经被占用,难道服务器端会为每个连接都创建新的端口吗?

    其实新创建的connfd 并没有使用新的端口号,也是用的80, (在实现聊天室的时候,我们只是为每一个客户端的连接单独创建一个线程去处理,但并没有为每个连接都创建新的端口。然而这样处理是有漏洞的,昨晚就被问到了(′д` )…彡…彡,然后我想了下也是,如果客户端很多,那这样做服务器不得崩了才怪,那怎么解决了?我答了下用线程池吧...又扯了)

    因为可以这么理解,这个socket描述符指向一个数据结构, 例如 listenfd 指向的结构是这样的:

    而一旦accept 新的连接, 新的connfd 就会生成, 像下面的表格, 就生成了两个connfd ,  它们俩服务器端的ip和port都是相同的, 但是客户端的IP和Port是不同的, 自然就可以区分开来了。

    所以socket 得通过五元组(协议, 客户端IP, 客户端Port,  服务器端IP, 服务器端Port)来确定。

     

    ‘我们只是简单的使用Socket与ServerSocket就完事了,那是因为底层为我们做了这么多的工作封装好让我们站在巨人肩上编程的。

    昨日感受:仰望星空脚踏实地。站在巨人肩上可以看得更广更远&基础很重要  “会用与明白如何实现这是专业与非专业的区别”  。

    展开全文
  • 埃隆.马斯克一个值得技术人员尊敬的科技狂人,他把现实、科幻、理想、情怀、未来有机的融合在了一起。他有很多伟大的、革命性的构想与实现,“星链”Starlink...本文就从通信的角度解读一下这个看似不可思议的计划。
  • QQ通信原理

    千次阅读 2017-12-17 01:54:55
    下面有4个基本的问答:问题一:为什么只要可以连上互联网的计算机都可以用QQ相互建立通信,而不需要固定IP?也就是这个QQ用户端是怎样找到另一个QQ用户的,而用户在每次使用时他可能用的是不同的计算机,有着不同的IP...
  • GPRS通信原理

    千次阅读 2015-08-01 11:51:59
    GPRS的工作原理、主要特点: 引 言  近年来,通信技术和网络技术的迅速发展,特别是无线通信技术的发展,使得电力系统的自动化程度进一步提高。GSM网络出现后,技术人员很快把GSM模块嵌入到各种仪表仪器中,如多...
  • 从模拟通信到数字通信,从计算机通信到移动通信,从有线通信到无线通信,从地面通信到卫星通信,从宏观电磁波通信到微观量子通信,从语音通信到视频通信,从...通过不同通信系统的案例,阐述其内在基本原理与主要技术。
  • p2p通信原理及实现

    千次阅读 2018-05-18 14:27:56
    简介 当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信。这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还有其他中间件如防火墙阻挡了...
  • 用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的 标识符 ”...
  • QQ通信原理分析

    千次阅读 2018-10-24 17:54:58
    问题一:为什么只要可以连上互联网的计算机都可以用QQ相互建立通信,而不需要固定IP? 也就是这个QQ用户端是怎样找到另一个QQ用户的,而用户在每次使用时他可能用的是不同的计算机,有着不同的IP地址。 服务器端不会...
  • 计算机网络通信原理部分

    千次阅读 2019-05-10 09:45:51
    文章目录计算机网络通信原理部分一、网络的由来?二、网络协议介绍三、五层模型讲解3.1、物理层3.2、数据链路层3.2.1 以太网协议3.2.2 mac地址:3.2.3广播3.3、网络层3.3.1 IP协议:3.3.2 子网掩码3.3.3 ip数据包...
  • 本系列的前面文章,主要拆解的是通信网络设备部署在地面上的通信,包括有线通信与无线通信。从本章开始,通信网络的部署从地面扩展到太空。包括卫星通信,GPS定位(单向广播卫星通信),第六代移动通信6G,埃隆...
  • QQ通信原理及QQ是怎么穿透内网进行通信的?
  • 网络通信原理和过程

    千次阅读 多人点赞 2019-02-12 15:05:00
    当时查http协议的时候了解的一些网络底层的...我觉得,把互联网分成五层,比较容易解释。 如上图所示,最底下的一层叫做"实体层"(Physical Layer),最上面的一层叫做"应用层"(Application Layer),中间的三...
  • HTTPS通信原理剖析

    千次阅读 2018-05-22 07:56:35
    a)把公钥放到互联网的某个地方的一个下载地址,事先给“客户”去下载。 b)每次和“客户”开始通信时,“服务器”把公钥发给“客户”。 但是这个两个方法都有一定的问题, 对于a)方法,“客户”无法确定这个下载地址...
  • 操作系统的网络通信原理整理

    千次阅读 2018-09-09 16:11:37
    操作系统 ...网络通信原理 互联网的本质就是一系列的网络协议 英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是 一系列统...
  • 互联网传输原理流程

    千次阅读 2018-12-12 10:10:49
    有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。但是,我们如何区分它是哪一个应用程序的请求呢。我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"...
  • 现代通信原理1:绪论

    千次阅读 2018-09-22 11:25:30
    1谈谈通信发展的历史 好几次做通信讲座, 我都用一个笑话开头:话说在通信发展的历史上,犯了两个错误。第一个错误是,原本以为电话应该是有线的,后来才发现原来应该是无线的。第二个错误是,原本以为电视应该是无线...
  • 摘要:本节主要来进行Android10.0 HwBinder的原理总结 阅读本文大约需要花费14分钟。 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! [Android取经之路] ...
  • 剖析互联网工作原理

    千次阅读 2017-07-10 08:50:32
    在某些第三世界国家和人口极少的地区,当地没有提供有线网络,那么此时卫星网络就很有必要了,人们可以通过卫星信号接入互联网。 虽然卫星相对较快,但是由于更长的传输距离,因此实际上它比有线网络要慢。此外,...
  • 通信原理之OSI七层参考模型(一)

    千次阅读 2016-09-19 10:58:59
    通信原理之OSI七层参考模型(一)  1、什么是计算机网络  谈计算机通信原理当然离不开计算机网络,那么什么是计算机网络。官方定义:计算机网络是由两台或两台以上的计算机通过网络设备连接起来所组成的...
  • P2P通信原理与实现(C语言)

    千次阅读 2017-03-01 15:40:28
     当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信。这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还有其他中间件如防火墙阻挡了链接的...
  • Android10.0 Binder通信原理(二)-Binder入门篇

    千次阅读 多人点赞 2020-03-30 07:44:16
    Android10.0 Binder通信原理(九)-AIDL Binder示例 Android10.0 Binder通信原理(十)-AIDL原理分析-Proxy-Stub设计模式 Android10.0 Binder通信原理(十一)-Binder总结 《HwBinder通信原理》 HwBinder入门篇-Android...
  • android之IM即时通信原理

    千次阅读 2014-04-16 22:56:16
    其他的即时通信软件原理与此大同小异。   一般的步骤: 首先,用户A输入自己的用户名和密码登录即时通讯服务器,服务器通过读取用户数据库来验证用户身份,如果用户名、密码都正确,就登记...
  • GPRS通信原理及应用特点

    千次阅读 2010-03-25 08:58:00
    GPRS通信原理及应用特点GPRS是在现有GSM系统上发展出来的一种新的数据承载业务,支持TCP/IP协议,可以与分组数据网(Internet等)直接互通。GPRS无线传输系统的应用范围非常广泛,几乎可以涵盖所有的中低业务和低速率...
  • 车联网的概念源于物联网,即车辆物联网,是以行驶中的车辆为信息感知对象,借助新一代信息与通信技术,实现车与X(即车与其他车、人、路、服务平台)之间的网络连接,提升车辆整体的智能驾驶水平,为用户提供安全、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,869
精华内容 35,947
热门标签
关键字:

互联网通信原理