我是靠谱客的博主 靓丽发夹,最近开发中收集的这篇文章主要介绍移动网络和计算机网络知识总结无线链路,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

采用TCP/IP五层架构对通信双方进行数据交互时将计算机网络中涉及到的移动通信(主要为网络层)和无线网部分

 

应用层:应用层通信分为两种 c/s模式和b/s模式 QQ通信是c/s模式(客户端服务器模式) b/s模式则是浏览器客户端模式

b/s模式使用的脚本语言 若c/s模式 使用socket 有ip地址和端口号组成

简单介绍一下b/s模式 当我们要需要在浏览器浏览网页 需要先在浏览器中输入网址

 

 

这个网址实际上就是我们需要访问服务器的ip地址 可是ip地址不是应该点分十进制的吗(例:192.168.1.12) 实际上用户很难记住IP地址(我们不可能每次访问服务器都输入地址,那样的话可就太难受了) 我们输入的www.csdn.net 实际上对应着我们主机里

 

http只是应用层 万维网用的协议

DHCP 地址池里的地址是有租期的

DHCP的理解

ISP供应商申请一个地址段 放到DHCP

DHCP服务器配置地址池 由网络管理员配置 地址池里有供动态主机协议的主机获取的ip

当我们要使用ip时 dhcp就会去地址池里查可用的地址

缺点 ip不固定 有时间限制

分配给主机的地址有使用租期

主机将分配到的ip和mac 放到缓冲里

 

运输层

应用将用户要发送的数据封装成一个socket 交给下层的运输层 socket内部里有ip地址 这时候问题来了 假如我们两个客户端 不仅安装了QQ还安装了其他的通信软件(如:微信等) 他们封装的目的ip地址都是一样的 怎么区分呢 这时候端口就发挥作用了 应用层是主机与主机之间的通信 通信层则是端到端的通信 因此我们需要把socket加上除ip以外的端口号 常见的端口号

运输层的另一个作用 顾名思义 “运输” 具体描述怎样运输报文段 这里涉及到面向连接的tcp协议 和面向无连接的udp协议 两种协议适用于不同的场合 tcp端口和udp端口是不冲突的 也就是说应用层某协议使用udp时使用10000端口 另一协议使用tcp也可使用 10000

TCP字节流传输 提供可靠交付 提供全双工的通信 (全双工的意思是 可边收边发)

为什么tcp可靠呢? tcp使用了停止等待 出错就重发

UDP报文传输 尽最大努力交付 没有拥塞控制

端口号在运输层封装

Socket 作为通信两端的收发器

tcp面向的是字节流 所以 java的tcp编程中需要使用字节流 不能使用字符流

tcp报头的几部分

三次握手

建立起一个TCP连接需要经过“三次握手”:

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主 动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客 户端交互,最终确定断开) 

第一次(A--->B),SYN=1,seq=x

第二次(B--->A),SYN=1,ACK=1,seq=y,ack=x+1 //seq为什么是y,ack为什么是x+1?

第三次(A--->B),ACK=1,seq=x+1,ack=y+1 //seq为什么是x+1,ack为什么是y+1

syn ack(大写) 都是标志位

 

为什么是三次握手而不是两次握手和四次握手?

客户端发送的请求信号被服务器接收后 服务器确认收到并回复后就可以通信了 为什么还要客户端在发送一次对服务器的消息确认呢?

假设两次连接 当客户端发送的请求包由于网络原因超时时 会重发 服务器在收到一个请求数据包后向客户端发送确认数据包 建立tcp连接 当超时的请求数据包到达服务器时 服务器建立另一个tcp连接 但是客户端已经丢弃掉了超时的包的回应等待 服务器就会陷入“僵尸等待”。

不使用四次握手是为了遵循逻辑设计要求的最俭原则

四次分手

那四次分手又是为何呢?TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。如果要正确的理解四次分手的原理,就需要了解四次分手过程中的状态变化。

· FIN_WAIT_1: 这个状态要好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。(主动方)

· FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你(ACK信息),稍后再关闭连接。(主动方)

· CLOSE_WAIT:这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以 close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。(被动方)

· LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。(被动方)

· TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FINWAIT1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。(主动方)

· CLOSED: 表示连接中断。

补充 :即A--->B Fin, B--->A ACK, B--->A Fin, A--->B ACK

 

 

 

tcp采用全双工的方式 在此只讨论单一方向

首先讨论非连续的情况 停止等待协议

无差错情况

 

由差错时

A发送一个数据包 B接收 若B接收后检测出差错 就直接丢弃掉 什么也不做 所以当A检测出超时时 就会重发之间发过的数据包 此时会有一个超时重传定时器 因此

 

①既然发送方发送的分组可能丢失或者有差错,可能需要重传,那么它必须暂时保留已发送的分组副本,只有收到确认后,才清除这个副本。

②分组和确认分组信息都应该有各自的编号,用来标示每一个分组和确认信息。(这样才知道需要发送哪个分组,收到了哪个分组的确认信息)

③超时计时器设置的时间应该略长于分组传送往返时间。

 

①既然发送方发送的分组可能丢失或者有差错,可能需要重传,那么它必须暂时保留已发送的分组副本,只有收到确认后,才清除这个副本。

②分组和确认分组信息都应该有各自的编号,用来标示每一个分组和确认信息。(这样才知道需要发送哪个分组,收到了哪个分组的确认信息)

③超时计时器设置的时间应该略长于分组传送往返时间。

 

确认丢失和确认延迟 

没有正常进行通信,除了发送方出现问题外,接收方同时也可能存在问题。

例如,如果A发送了M1分组,到达B,B发送了M1确认信息,但由于网络原因,该确认信息丢失。那么这个时候,A在超时重传时间内,没有收到B的确认信息,而且它并不知道是自己的分组有差错、丢失,还是B发生的确认丢失了。因此,A会在超时重传过后,重传M1分组。 

接收方B会采取这两个行动: 

①B会丢弃M1分组,不向上层交付。(B之前已经收到过M1分组了) 

②向A发送确认(因为A重发了,肯定重传时间内没有收到确认信息)

 

还有可能是另一种情况,就是B发送了确认,没有丢失,但是延迟了。也就是说,B发送的确认在A超时计时器过期后才到达。 这种情况下,A收到确认信息后会丢弃,然后重传刚才的分组,B收到后,丢弃重复的分组,并重传确认信息。

 

 

 

总结:无论B是超时还是延时 A都不管发过来的第一次的确认包(不管有还是没有)

根据上述的确认和重传机制,我们就可以在不可靠的网络上实现可靠的传输。

连续ARQ协议

建立在停止等待协议的基础上

正常情况下 分为已发并确认的 已发未确认 等待发送 不能发送的 (中间的两种属于发送窗口中的)

 

非正常情况:

当出现已发送的未确认的报文 确认丢失或者确认延迟或者校验错误

 

 

 

窗口分为滑动窗口拥塞窗口。

滑动窗口是接受数据端使用的窗口大小,用来告知发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制的目的。

那么对于数据的发送端就是拥塞窗口了,拥塞窗口不代表缓存,拥塞窗口指某一源端数据流在一个RTT内可以最多发送的数据包

 

网络层(侧重移动ipv4 )

 

1)移动终端在家网时,仍按传统的TCP/IP方式进行通信,不需要使用移动IP协议。

 

2)移动终端漫游到一个外地网络时,仍然使用固定的IP地址进行通信。为了能够收到通信对端发给它的IP数据包,移动终端需要向家代理注册当前的位置地址,这个位置地址就是转交地址。移动IP可以通过两种方式获得转交地址——外代理的地址和动态配置一个地址。

 

3)家代理接受来自转交地址的注册后,会构建一条通向转交地址的隧道,将截获的发给移动终端的IP数据包通过隧道送到外网转交地址处。

 

4)在转交地址处解除隧道封装,恢复出原始的IP数据包,最后送到移动终端,这样移动终端在外网就能够收到这些发送给它的IP数据包。

 

5)移动终端在外网通过外网的路由器或者外代理向通信对端发送IP数据包。

 

6)当移动终端来到另一个外网时,只需要向家代理更新注册的转交地址,就可以继续通信。

 

7)当移动终端回到家网时,移动终端向家代理注销转交地址,这时移动终端又将使用传统的TCP/IP方式进行通信。

无线网络是工作在数据链路层和物理层的网络和传统有线网络(以太网)并列存在

 

ip层拿到数据包ip对其地址解析 获取对方的mac地址 交给下层

数据链路层和物理层(侧重无线网部分)

无线网络的要素 

无线主机端系统。

无线链路主机连接基站或另一台主机。

基站主机和基站关联:主机位于基站的无线通信覆盖范围,且主机使用基站中继和更大的网络的数据。例如,蜂窝网中的蜂窝塔 wifi中的接入点

网络基础设施与主机通信的更大的网络。


无线网络协议

802.11是IEEE最初制定的一个无线局域网标准,主要用于解决办公室局域网和校园网中用户与用户终端的无线接入;

802.11a工作在5.4G频段,最高速率54兆,主要用在远距离的无线连接;

802.11b工作在2.4G频段,最高速率11兆,由于速率较低,逐步被淘汰;

802.11g工作在2.4G频段,最高速率54兆;

802.11n最新无线标准,常见速率有108兆、150兆,目前最高速率能到300兆。 

802.15.4:ZigBee

ZigBee 无线技术最常用的应用场景是智能家居设备领域。该技术将多个设备同时连接在一起的能力使其成为家庭网络环境的理想选择,用户可以实现智能锁、灯光、机器人和恒温器等设备之间的相互通信。

802.15.1:蓝牙和BLE

蓝牙和低功耗蓝牙(BLE)(有什么区别?) 是用于短距离数据传输的无线技术。该技术经常用于可连接用户手机和平板的小型设备。例如,该技术多用于各种语音系统。

802.16:WiMax

WiMax 代表的是全球互操作性微波接入技术。这种无线技术允许数据以30-40兆比特/秒的速率传输。该技术具体由IEEE 802.16无线家族实现其互操作性。

无线链路

· 无线网络比特差错率较高,不仅需要CRC,还可能需要链路层ARQ重传受损的帧。

· 两台主机不足以相互检测到对方的传输 

· 由于物理阻挡存在隐藏终端问题hidden terminal problem)。

· 信号衰减fading)。

无线网络特征

· 信号强度递减。有路径耗损。

· 其他源的干扰。如2.4GHz的802.11b受到对应无线电话和环境电子噪音影响。

· 多径传播。由于地面发射通过多条路径传播,接收的信号模糊

物理层特征

· 对于给定的调制方案,SNR(信噪比,Signal-to-Noise Ratio)越高,BER(比特差错率)越低。

· 对于给定的SNR,较高比特传输速率的调制技术具有较高的BER。

· 物理层可以根据信道条件动态选择调制技术。

CDMA

· 码多分址Code Divison Multiple Access, CDMA),是一种信道划分协议 。每个要发送的比特乘一个信号比特编码,这个信号变化速率(码片速率, chipping rate)比初始数据快。接收方再乘以相同的编码获得原始数据。
例如,发送方使用的CDMA码:(1,1,1,-1,1,-1,-1,-1)发送01比特,0示为-1:

无线站点关联AP 

被动扫描。扫描信道,监听信标帧

主动扫描。向主机范围内的所有AP**广播探测帧AP用探测响应帧应答。

之后无线主机向AP发送关联请求帧AP以关联响应帧响应。

MAC协议

带碰撞避免的CSMACSMA with collision avoidance, CSMA/CA)。
链路层确认/重传(ARQ)。

未实现碰撞检测而用碰撞避免的原因: 

802.11适配器上,接收信号强度通常远小于发送信号的长度,检测碰撞代价大。

适配器会由于隐藏终端和衰减无法检测到所有碰撞。

目的站点收到一个通过CRC的帧后,等待一个短帧间间隔Short Inter-Frame Spacing, SIFS),发回确认帧。如果给定时间内未收到确认帧,重传该帧,若干次重传未确认,则放弃重传丢弃该帧。

发送帧的步骤: 

站点监听到信道空闲,等待一个分布式帧间间隔Distributed Inter-Frame Space, DIFS)后发送帧,等确认。否则,站点选取一个随机回退值(二进制指数回退),并在侦听到信道空闲之后递减该值,信道忙时该值不变。当计数为0时,发送帧,等确认。收到确认后若有帧要发送,继续第一步。若未收到确认,进入第二步的回退阶段。即使信道空闲,CSMA/CA也使用倒计数抑制传输。 因为回退不同的值,发送有先后,后发送的站点接收到先发送的站点的信号,会暂停计数,从而避免碰撞。如果两个站点相互隐藏,或者随机回退值非常接近,仍然可能碰撞。处理终端隐藏发送方使用请求发送Request to Send, RTS)控制帧,AP允许发送Clear to Send, CTS)控制帧 预约对信道的访问。当帧长超过门限值时使用两个控制帧,减少消耗的信道资源。

帧格式

· 

· 有效载荷。通常小于1500字节。

· 地址。处于互联需要3个地址,地址4在自组织模式中使用。 

地址2。发送该帧的站点MAC地址。

地址1。接收该帧的站点的MAC地址。

地址3。BSS是一个子网或者一部分,需要与路由器接口相连,地址3位路由器接口MAC地址。

· 序号。区分新传输的帧和重传的帧。

· 持续期。预约信道的时间,包括传输数据帧和传输确认的时间。

· 控制字段。 

· 类型、子类型用于区分关联、RTS、CTS、ACK、数据帧。

· AP和从AP,定义不同地址的含义,随着发送者、使用模式变化。

· WEP。是否加密。

帧地址的变化

R1到H1路由器R1将数据报封装在以太网帧中,源地址为R1的MAC地址,目的地址为H1的MAC地址。帧到AP后,由802.3以太网帧转换为802.11无线网帧。地址1为接收方H1的MAC地址,地址2为发送方AP的MAC地址,地址3为R1的MAC地址。

H1到R1  H1生成一个802.11帧,地址1为AP的MAC地址,地址2为H1的MAC地址,地址3为R1的MAC地址。AP收到该帧后,转为以太网帧,源地址为H1的MAC地址,目的地址为R1的MAC地址。地址3允许AP构建以太网帧时确定目的MAC地址,在BSS和有线局域网互联中起作用。

其他性质

· 速率适应。条件较好(收到ACK),增加传输速率,条件变差(没有收到ACK),减小传输速率。类似TCP拥塞机制。

· 功率管理。一个结点可以明显的在睡眠和唤醒状态之间交替。 

· 结点向AP指示打算睡眠,并设置定时器,在AP发送信标帧(100ms一次)前唤醒(约250us)结点。

· 结点睡眠时,AP先缓存帧,待以后传输。

· 短暂的唤醒时间、接收信标帧时间、检查缓存帧的时间,能大大节约能源。

蜂窝网

· WiFi热区范围较小,蜂窝网通过基站控制器Base Station Controller, BSC)和收发基站Base Transceiver Station, BTS)组成GSM基站系统,并将它们连接,可以进行大范围的无线覆盖。一个基站覆盖的区域类似蜂窝

· 蜂窝电话进行扩展,不光可以传播语音,还可以传输IP数据报。

最后

以上就是靓丽发夹为你收集整理的移动网络和计算机网络知识总结无线链路的全部内容,希望文章能够帮你解决移动网络和计算机网络知识总结无线链路所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部