目录

网络概述:

1.网络通信的层次

2.OSI七层网络模型

3.TCP五层模型:

一、物理层

1.物理层作用

2.物理层概述

3.信号调制

4.信道复用技术

二、数据链路层

1.数据链路层作用

2.点对点数据链路层三个基本问题

3.滑动窗口协议

5.以太网

三、网络层

1.概述

2.IP地址

3.构成超网(无分类编码)

4.IP协议

5.ARP协议

6.ICMP协议

四、传输层

1.概述

2.UDP概述

3.TCP详解

4.TCP可靠性

五、应用层

1.DNS解析域名

2.FTP

3.Telnet

4.WWW万维网

5.网络安全

六、学习资料下载地址PFD+视频+图解


网络概述:

网络通信其实就是位于网络中不同主机上面的2个进程之间的通信。

1.网络通信的层次

(1)硬件部分:网卡

(2)操作系统底层:网卡驱动

(3)操作系统API:socket接口

(4)应用层:低级(直接基于socket接口编程)

(5)应用层:高级(基于网络通信应用框架库)

(6)应用层:更高级(http、网络控件等)

2.OSI七层网络模型

3.TCP五层模型:

表示层:解决不同主机的通信的数据格式问题

会话层:建立和管理应用程序之间的通信(连接)(对下层的封装) 方便用户使用,自动收发包 报文

传输层:拆包组包 TCP:保证数据包的完整性 和 以及处理传输过程中可能发生的危险 UDP:发完就完了 报文----拆分成---->包

网络层:路由和地址解析。选择适当的网络节点进行路由。 包 ---->数据帧

数据链路层:控制对物理设备的访问 规定数据如何在不同物理设备上进行传出 并提供数据纠错功能。在不可靠的物理设备上提供可靠传输 数据数据帧

物理层:定义通信的物理设备的规格。网线接口类型,光纤接口类型,传输速率等

因为Socket通信时候用到了IP和端口,仅这两个就表明了它用到了网络层和传输层;而且它无视多台电脑通信的系统差别,所以它涉及了表示层;一般Socket都是基于一个应用程序的,所以会涉及到会话层和应用层。

参考博客:

https://www.cnblogs.com/carlos-mm/p/6297197.html

https://blog.csdn.net/u011774517/article/details/67631439

一、物理层

1.物理层作用

管理维护物理连接,确定传输媒体特性,提供比特流传输服务,对上层(数据链路层)屏蔽物理设备以及协议的差异性。  信息转 信号

2.物理层概述

传输媒体特性:机械特性,电气特性,功能特性,过程特性

信道:传输媒介

信息(“aasdf”)-------->数据(二进制数据)----------->信号(可在物理设备上传输)

信号分为:模拟信号和数字信号

调制:数字信号转模拟信号

解调:模拟信号转数字信号

传输方式:单工通信  双工交替通信  双工同时通信

计算机产生的二进制数(基带信号)无法直接在信道上传输,通过调制将基带信号转换成可在信道上传输的信号。

3.信号调制

调制分为两类:基带调制,带通调制

基带调制:将基带信号转换成符合信道特性的基带信号,也称作编码

带通调制:将基带信号转换成可在模拟信道上传输的模拟信号

基带调制:

带通调制:

调幅抗干扰较差

限制码元传输速率的两个因素是信噪比和带宽(信道能通过的频率范围)

当带宽一定,信噪比一定,码元传输速率一定时,可让码元携带更多的数据来提升传输速率(一个码元表示一位二级制数据 --->一个码元表示m位二级制数据)

码间干扰:由于信道通过的频率限制,导致码元之间的界限不明显

4.信道复用技术

共享信道,提高信道利用率,降低架设成本

频分复用:同一时间不同用户占用不同带宽

时分复用:

时分复用也会浪费资源

码分复用:扩频,将1比特转化成一个比特序列,多用于加密

二、数据链路层

1.数据链路层作用

接收网络层的ip数据包,将其添加首尾封装成帧。

在物理层比特流在介质上传输是不可靠的,数据链路层在物理层的基础上提供差错检测,差错控制,流量控制。为网络层提供一个可靠传输。对网络层屏蔽了不同传输介质的差异性。

数据链路层信道通信方式:点对点通信  广播通信(广播通信需要共享信道协议来协调主机间的数据发送)

2.点对点数据链路层三个基本问题

2.1 封装成帧: 可确定帧界限

在网络ip报文的基础上添加首尾封装成帧,首尾是为了确定帧界限,也包含了一些控制信息   帧 = 首 + ip收据报 + 尾。

作用:根据帧定界符 可以确定是否收到的是个完整帧  不是完整帧直接丢弃

MTU:ip数据报的长度上限

2.2 透明传输:可传输任意比特流

保证ip数据报中的比特组合不会出现帧定界符,使用字节填充和字符填充将ip数据包中的帧定界符的字节进行转义

2.3 差错检测:对传输中出错的帧进行丢弃

链路上传输由于噪声的干扰导致传输的帧数据错误,数据链路层采用循环冗余检测CRC,保证帧的正确性

循环冗余检测CRC:通信双方约定一个比特序列,将待发送数据与约定比特序列进行运算,生成一个帧检测序列FCS,将FCS添加到数据后一起发送出去。接受端根据FCS校验是否数据出错,出错就丢弃(并不能判断出是哪些字段出错)

循环冗余检测只能做到无差错接受,

CRC保证了比特流的正确性,但并不是一个可靠传输,还存在丢帧,帧重复,帧乱序到达等情况,所以再次基础上增加帧序号,确认,重传机制保证链路层为网络层提供一个可靠的传输。

3.滑动窗口协议

数据帧 --- > 发送缓存 ----> 发送

流量控制:平衡收发方传输/接受速率   流量控制取决于接收端  防止接收端缓冲区溢出(丢包)

当发送速率 > 接受速率  接收端的缓冲区可能会溢出 导致丢包

等停发送控制:效率低

多帧连续发送控制:

后退N帧重发: N帧丢失  从N帧开始全部重发  会重复发帧

选择性重发:丢哪个重发哪个

若从滑动窗口的观点来统一看待停等、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。

停等:发送窗口= 1,接收窗口=1;

后退n协议:发送窗口>1,接收窗口=1;  每收到一个帧并且帧序号在窗口内 则回一个确认帧

选择重传协议:发送窗口>1,接受窗口>1;  窗口内的帧全部收到 则发送确认帧 并移动窗口

发送窗口大小是根据一段给定时间内链路上有多少待确认的帧来选择的

https://blog.csdn.net/king1991wbs/article/details/7604442

https://blog.csdn.net/do_best_/article/details/79771841

4.PPP协议

特点:

封装成帧

透明传输

差错检测

支持不同的网络协议

支持不同的链路(光 电 串行  并行)

链路状态检测

网络地址协商

数据压缩

不支持:流量控制   纠错(纠正比特流错误) 多点通信   半或单双工链路

PPP提供的服务是不可靠的

当主机进行拨号使用通信的协议就是PPP

PPP包括三部分

封装成帧方法

链路层控制协议LCP

LCP为链路控制协议用于链路层的建立,删除,监控等。如协商MTU(数据最大长度,不是帧长度)

网络层控制协议NCP

NCP为网络控制协议,常用IPCP,IPXCP。用于协商网络层配置的协议,主要有协商通信的逻辑地址IP是否可用等。

协议内容:

标志字段:用来标识帧的开始和结束

地址字段和控制字段:无用

协议字段:网络层使用的协议类型

信息字段:IP数据报内容

校验字段FCS:使用循环冗余算法生成的校验码

建立过程:

主机发送LCP帧 建立 配置 测试链路

主机发送NCP帧 选择配置网络层协议

建立好网络层后 网络层数据通过PPP协议传输

各种设备:

网卡作用:

缓存数据

串行 并行转换

实现协议(如ppp)

对上层提供数据传输服务

过滤功能对收到的帧进行MAC地址检测

5.以太网

广播通信:

以太网(局域网)通信特点:

1.无连接  无编号  无确认  无重传  所有的可靠性都是上层TCP决定

2.使用曼彻斯特编码信号

总线型:

总线型本质就是广播通信,所以一对一通信只是对mac地址进行校验,对不是发往本机的帧进行丢弃

链路层的广播信道:

共享信道:

1.静态划分:频分复用 波分复用,代价高不适合局域网

2.动态划分

随机接入:主机可随机发送信息

受控接入:主机受控制发送信息

总线型网络:主机发送数据,总线上的所有主机都可收到数据,进行地址对比,如果不是发给自己的就丢弃,是则接收处理。由于信道是共享的,多台主机’同时‘发送数据,则信号会被破坏掉。

CSMA/CD:协调总线型网络上主机的数据发送

准备发送:从网络层获取数据,封装成帧,放入缓存中

发送前 :在发送数据前检测是否有其他主机正在发送数据(根据电路上电压的变化)  若在一段时间内信道是空闲的 则发送数据

发送数据后:等待一个争用期时间(总线上最长的两个端点传输时间 * 2),如果在这段时间内没有检测到碰撞,则认为发送成功,如果检测到碰撞,随机一个时间进行重新传输(防止再次同时传输发生碰撞)

简单总结:先听后发,边发边挺,冲突则停,挺后随机时间再发

局域网内链路层分成两个子层:

LLC负责识别网络层协议,然后对它们进行封装。

MAC子层的主要功能包括 数据帧的封装/卸装,帧的寻址  链路的管理,帧的差错控制等。MAC子层的存在屏蔽了不同物理链路种类的差异性

MAC帧:

由于MAC帧是针对局域网所以需要 目标于源地址,PPP协议是点对点的连接不需要地址信息。数据字段最小是46字节,不足补齐

前八个字节不属于mac帧 是额外信息  前七个自己用于两边的网卡进行同步,第八个字节是定界符通知网卡要有MAC帧来了

局域网帧与帧之间有时间间隙,所以不需要结束定界符 也就不需要透明传输

网络设备

中继器:信号放大

集线器:数据转发 并不缓存数据  将信号放大转发  减少因为信号在物理媒介传输时信号衰减 导致帧无法解析

用内部器件模拟电缆实际还是总线型  CSMA 工作在主机的网卡上

工作在物理层

不进行碰撞检测

网桥:分割了冲突域,具有数据过滤功能,两个端口,每个端口是一个冲突域

交换机:相当于一个多端口的网桥,每个端口是一个冲突域

工作在数据链路层

独占传输媒介,无碰撞

缓存数据(AB同时向C发送数据 C只能同时接收一个 则不能立刻接收的由交换机缓存)

地址表(哪个主机连的哪个端口 MAC地址) 表的每个表项目都有生存周期

三、网络层

1.概述

网络层是无连接,不可靠尽量交付数据包的服务。由主机的运输层负责对进程提供可靠性的服务。这样设计降低了网络设备的复杂度。

无连接:分组发送后不维护任何状态

不可靠:不保证分组都能正确,不丢失,不乱序的到达

2.IP地址

IP地址与MAC地址区别:

IP是逻辑地址,用于路由寻址。MAC是硬件地址(每台主机或路由唯一)用于数据链路层帧传递的地址

IP地址分类:

分类IP地址:

IP = 网络号 + 主机号

ABC三类地址的主机号全0和全1都保留,主机号全1为子网广播地址,主机号全0为子网网络地址(一个网段中第一个IP地址为网络地址)

A类地址的第1块网络号和第2块网络号要保留

子网划分:

划分一部分主机号作为子网号使用

子网划分只是对内,对外来说任然是一个网络(对外网络地址还是分类的),局域网内的所有的掩码相同,每个子网内主机数相同。(对一个X类IP地址域,进行等长划分子网)

子网掩码:无论是否划分子网,子网掩码 & IP就能得出网络地址

子网划分将 N个主机  划分成 n个子网

3.构成超网(无分类编码)

特点:

消除分类IP以及子网的概念,IP格式分为两级 网络前缀+主机号

网络前缀相同切连续的IP地址组成一个’CIDR地址块‘

虽然没有子网,但是分配到’CIDR地址块‘后可以进行子网划分,子网的网络前缀要比整个地址块的网络前缀要长

路由聚合:一个地址块可以有多个连续的X类的网络,路由表中使用地址块(网络前缀)来路由,减少了路由条目

最长匹配:查找路由表中可能得到不止一条匹配结果,应选择最长的一条匹配,网络前缀越长,地址块越小,路由查询范围越小

二插线性查询:将唯一的网络前缀,构建一个二差树,数的每条路径都是一个唯一网络前缀

4.IP协议

IP分组分为两部份 分组头部  数据

分组头分为 固定部分(20字节)   可变部分(最大40字节)

版本:IP4 IP6

报头长度:头部长度

服务类型:暂时不用

总长度:数据 + 头部长度  最大 2^16 - 1 = 65535 不能超过MTU

生存时间:可通过路由数的最大值   每经过一次路由 TTL 减 1 直到减到0 丢弃报文 发送ICMP分组通知主机

协议:数据部分使用的协议  TCP  UDP  ICMP ....

头部校验和:校验头部数据的正确性,与数据字段无关,上层进行数据校验。采用二进制反码取和

  1. 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
  2. 反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
  3. 补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)

可变部分:为了支持一些可选的功能(如排错 测量)

标识:分组号

标志:

第一位 :0

第二位:是否可分片,

第三位:是否是最后一个分片

片偏移:片在分组中的偏移量

每个片都要加一个分组头

5.ARP协议

ARP通过网络层使用的IP地址获取到数据链路层使用的MAC地址

原理:

每台主机有一张ARP缓存表,保存本局域网中IP到主机/路由的MAC的映射。

超过生存期的表项自动删除。生存期保证其他当主机的MAC地址改变,可以删除表项,重新请求,获得新MAC地址。保证了表的正确性。

当A向B发送数据,若在缓存中找到B的IP那么不需要ARP进行解析,没找到则通过ARP协议进行解析

1.生成ARP分组(网络层)

2.链路层将ARP分组封装成帧,目的MAC地址为“FF-FF-FF-FF-FF-FF”,进行广播

3.当其他主机收到A的ARP请求,查看是否已经有A的MAC地址,没有则存入。B收到则回复我的MAC地址到A(此时帧有目标的MAC地址所以是单播),保存A的MAC地址进缓存表。

分组转发:

路由表中包含:目的网络号,下一跳的IP地址   没有指定完整路径,而是指定下一跳的地址

特定路由:某一IP地址的分组转发的路由

转发路由:某一网络地址的转发路由

默认路由:任意IP网络的转发路由

算法:

根据目的IP地址D计算出目的网络地址N

若路由连接了网络N,路由直接交付给主机(目的IP地址转换MAC地址 封装成帧 交付到目的主机上)

若有指定的特定路由,交付到特定路由上

有转发路由则,间接交付到转发路由上

有默认路由,交付到特定路由上

6.ICMP协议

网络控制协议(Internet control message protocol) 网络层协议,提供路由/主机差错或异常报告,提高IP数据报传输成功率

类型:报文类型

代码:类型的具体细分

校验和:用于ICMP报文校验

报文分为两种:差错报文  查询报文

差错报文:

目的主机不可达:

源主机抑制:主机或路由因为堵塞导致丢弃包

超时:TTL超时

重定向:通知主机/路由 下次发送数据包时的路由,为了选择一个更快捷的路径

参数问题:IP数据报头出错

询问报文:

回应请求:询问路径是否可达

时间戳请求:同步主机时钟

地址掩码请求:查找与主机所连接的网络的子网掩码

路由地址请求:查找与主机所连接的本地路由器地址

ICMP差错报告的数据字段:

不发送ICMP数据报情况:

对ICMP数据报不回ICMP数据报

同一分片只回一个,后续的同一个分组中的分片数据报不回

多播地址不回

特殊地址不回

应用:

ping:测试主机是否可发,ping 是发送ICMP,目的主机收到后回ICMP

Tracert:说去主机间完整路径,源主机发送TTL为1的报文,第一个路由器收到后,TTL减1丢弃报文(生存期到了),回一个ICMP差错报文,这样就可以获取到第1个路由地址,让后源主机再依次发送TTL为 2 3 。。 知道到达目的主机

四、传输层

1.概述

作用:提供端对端的连接和数据传输服务(进程对进程),网络层提供的是主机对主机之间的连接服务

运输层的复用和分用:

复用:不同进程使用同一运输层进行传输

分用:运输层收到数据后,可以分发给不同的进程

2.UDP概述

无连接  无确认  基于数据报的不可靠交付  一对多

对应用程序交付下来的数据报添加UDP包头形成TPDU交付网络层,无网络拥塞控制,所以网络拥堵不会影响其发送速率。

数据报头:源端口    目的端口   长度:TPDU的长度    校验和

控制数据包大小:太大IP分片 ,  太小传输效率低

伪包头:单纯为了计算校验和,无其他意义,也不进行传输

优点:简洁  高效  占用资源少

适用于:多播  广播   视频播放

3.TCP详解

面向连接,字节流传输,全双工,可靠传输(确认重传,流量控制,拥塞控制  校验和)

TCP的每次传送报文长度流量窗口大小和网络拥塞清空进行决定。UDP根据上层发送的数据报大小决定。

TCP连接的是两个套接字

套接字 = IP +端口号

1. SYN = synchronization 同步。正如我们上文介绍所说,TCP连接的建立必须要就某些问题达成约定,也就是同步信息

2. PSH = push 发送端通知接收端不要因为等待额外数据而让已送达的数据在缓冲区滞留。类似flush()

3. FIN = finish 也就是我们所说的四次挥手。结束的含义

4. ACK = acknowledge 确认报文。你可以简单认为是回执,具体是确认哪一部分的数据,需要结合sequence number

建立和结束连接:

三次握手:

最后一次握手,是为了防止网络中有延迟的无用连接请求达到服务器端,导致服务器错误的分配网络资源

四次挥手:

建立和断开连接时的最后一个确认包,都是有风险的,但是没办法发送确认的确认(这样确认包无穷无尽)。所以对于确认包丢失的情况,建立了超时重发机制(一定时间收不到确认重新发送)。

确认和重发机制保证两边发送和接受信息的同步。 可靠性的另一部分就是减少丢包的可能性。

三次握手为了协定通信参数:

ISN:

SYN包中seq = ISN,seq增长速度和等于发送字节速度

seq和ISN:ISN是初始序列号 是一个32位的整数,是一个边界值,ISN<=seq <=ISN + sendbyte

四元组的ISN = 老连接的seq   + 每4毫秒加1, 这样做可以保证新连接的ISN 一定是大于老连接的seq(发生回环时出现问题)。这样就可以辨别新老连接的数据包。

当在一个高速通道上,seq会发生回环。同一个seq是不同的包。TCP引入时间戳选项,用于解决这种问题。也就是seq+时间戳 作为包与包之间的鉴别。

TCP/IP协议中,在建立连接的时候ISN序号分配问题?

https://www.zhihu.com/question/49794331/answer/117922450

MSS:

为了避免IP层分片,MSS = MTU - (TCP + IP首部)(40字节)。仅在建立连接时通知,在连接过程中无法感知MSS的变化。自己的约束,而不是整个链路的约束。

交互数据流:注重反应速度,交互的迅速反应

传输策略:

捎带ack:ack包和数据包组成一个包一起发送 。等待超时就单独发ack。

Nagle算法:阻塞等待ack包,收到ack包时,将缓存的所有数据包使用一个包发送。 特点回应快  发送快。但是对于低俗网络,回复慢导致发送慢,会又"卡顿''。

两种方式分别从接收端和发送端入手,压缩报文的数据量,增加报文的传输速率

成块数据流:单向快速传输大块数据。在未收到确认时发送端可以连续发送多个数据包,但是如果发送端发送包数量不加以控制,可能会导致接收端缓冲区溢出。滑动窗口可以有效解决此问题,窗口用于控制发送端发送速率。

发送端:窗口内的数据是  已经发送未确认 + 可发送。当收到一个确认,窗口左边界右移,当收到一个ACK通知接收端缓冲区改变,窗口右边界右移。

接收端:窗口内的数据是  未发送确认 + 可接受。当发送一个确认,窗口左边界右移,当处理完一个包,窗口右边界右移。

带宽时延乘积:把一条信道比作一根水管。带宽就是水管横截面积。时延就是水管的往返长度。

4.TCP可靠性

怎么减少丢包?

拥塞控制   流量控制

怎么确认丢包?

ACK 确认机制

怎么处理丢包?

超时重传

校验和用于校验数据损坏。

4.1流量控制(滑动窗口)

发送方通过维持一个发送滑动窗口来确保不会发生由于发送方报文发送太快接收方无法及时处理的问题。此时发送方的报文分为四类, 第一类是已经发送并且得到接收方确认的报文,第二类是已经发送但是没有接收到确认的报文,第三类是发送方还没发送,但是滑动窗口还足够巨大,允许被发送的报文, 第四类是还没发送并且窗口已经被占满,不允许发送的报文。 一般来说,滑动窗口的最左端都是介于第一类跟第二类报文的分界线,最右端是第三类跟第四类报文的分界线。

滑动窗口的流量控制可以包括那么几个协议:

a、停等协议。 滑动窗口的大小为1, 每个发送报文都要等到被确认以后,发送方才继续发送下一个报文。

b、后退n步协议。 该协议下,滑动窗口大于1,发送方可以一直发送报文,但是当接收到接收方发送的三个连续的同一序列号的ACK报文时,说明该序列号的报文是已经丢失的,那么此时重发该丢失报文以及该报文以后的报文(包括那些已经发送的)。

c、选择重传。在后退n步协议当中,如果某个报文丢失。那么将要重新发送这个丢失报文及以后的所有报文(包括已经发送的),选择重传协议不用做此要求,只要重新发送丢失的报文即可。

重传时间选择:通过每次发包 ---- 到---- 收到确认往返时间RRT,动态计算重传时间。

4.2拥塞控制:

拥塞是整个通信链路,表示整个链路的拥堵情况,拥塞窗口是通信过程中不断的试探出的一个界限值。

滑动窗口是流量控制,所谓流量控制,是端对端的行为。只对发送和接受端的能力进行一个平衡。

TCP信道拥堵检测前提:

前提条件:RRT时间准确   丢包不是因为数据损坏(几率很小)

ssthresh:动拥塞避免算法的界限值  上次传输最大的未发生拥塞的值。

cwnd:拥塞窗口大小

判定拥塞情况:

拥塞严重:分组丢失引起超时。  然后降低cwnd使网络能恢复到顺畅的情况。cwnd降低到1。

拥塞不严重:连续发送的数据包中某一个丢失,发送端收到多个重复的确认包。cwnd降低为原值一半。

无论拥塞情况如何只要判定发生了拥塞,都将ssthresh变为一个安全值( ssthresh = ssthresh /2)。

收到连续相同确认。接收端无法判断是乱序到达,还是丢失报文。但是当收到了三个相同的确认,那接收端就认为报文丢失。 立刻重传,无需等待超时重传。

快速重传  拥塞控制  慢开始  快速回复 都是针对于拥塞窗口,

ack = 3 意义:3之前的所有报文已经送达,

慢开始是快速增加网络流量,拥塞避免是降低增长速度。

超时导致重传,这时认为网络堵塞,接近瘫痪。将cwnd = 1,极大的降低发送速率, 使网络能够恢复通常状态。

收到连续三个重复的确认包,这是认为网络发送一点拥堵,但是没有瘫痪。超时时将cwnd设置 = 1是为了让网络恢复。而发生一点拥堵只需要将cwnd设置为ssthresh,这样网络波动不会很大。如果将cwnd降低为1,那么这是网络利用率较低。

为什么发生拥塞时,还增加cwnd?

案:在检测到丢包时,窗口为cwnd。这时候网络中最多有cwnd个包(in_flight < cwnd )。每当收到

一个重复的ACK,则说明有数据包离开网络,达到接收端了。那么,此时网络中还可以再容纳1个包。由

于发送端滑动窗口不能移动了,所以如果想保持in_flight,可以使cwnd++。

这样一来,可以提高吞吐量。而实际上,在fast recovery期间发送的新数据包比起发生丢包的cwnd来说,

已经是大大减少了。

TCP核心概念-慢启动,ssthresh,拥塞避免,公平性的真实含义(一定要看)

https://www.2cto.com/net/201605/509810.html

2*N = r*RTT  实际的带宽总是趋向于ssthresh的2倍

定时器:

重传定时器

保活定时器:不可靠,下层应用应自己实现。

2mls

坚定定时器:收到0窗口后,用于周期性探寻窗口值变化。应用于当接收方发送窗口变化ack(发送方是不回包的),这时接收方开始等待收数据。但这个ack包丢失了,导致发送方在等待通知窗口变化。坚定定时器就是解决互相等待的情况。

MSS静态建立连接是确定端和端的MTU。

路径MTU:当包不可分片,包大小超过设备的MTU,则设备会返回一个ICMP报文。通过这种机制探寻出路径MTU。(这个和通过ICMP打印那个路径相似)

数据为什么不一次校验?

数据校验:避免非主观因素造成的数据错误(防君子而防不了小人)

半连接:拆除发送通道,保留接受通道。

应用层为什么要设计心跳??

客户端异常关闭,如果服务器向其发送消息会收到一个RST回复。但是如果服务器没有发送数据包就会一直认为这个连接存在,服务器会一直维护一个连接状态占用资源。所以TCP引入保活机制,每2h进行一次探查,释放不存在的连接。

保活缺陷:检测周期长2h   只能检测到端到端的传输层通畅,也就是端到端可以发送和接受数据。但是应用层可能处于死锁等异常状态,保活是检测不到的。所以需要在应用层实现心跳机制。

五、应用层

规定应用进程通信所遵守的协议

1.DNS解析域名

客户端先检查本地是否有对应的IP地址,若找到则返回响应的IP地址。若没找到则请求上级DNS服务器,直至找到或到根节点。

DNS中递归查询和迭代查询的区别

1、 递归查询: 一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交客户机。

2、 迭代查询(反复查询): 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求。

以一个DNS请求解析为例:

1)用户发起域名请求到dnsA,这时dnsA有这个记录,将结果返回给用户,这个过程是递归查询。

2)用户发起域名请求到dnsA,这时dns没有这个记录,它去向dnsB问有没有这个记录,以此类推,直到把结果返回给用户,这个过程是递归查询。

3)用户发起域名请求到dnsA,这时dnsA没有这个记录,它告诉用户,我没有这个记录,你去问dnsB吧,这个过程是迭代查询。

2.FTP

异构网络主机间进行文件传输,屏蔽主机系统处理文件的差异性

本身不提供可靠的服务,而是由TCP提供

两条TCP连接:控制连接 数据连接

控制连接 : 访问控制 登陆验证..

数据连接 : 传输数据

用FTP对文件进行操作时是拷贝整个文件,如 A 主机修改B主机中文件,将B主机文件拷贝到A,修改后再拷贝回B。

TFTP:UDP进行传输 分块传输 序列号 重传

3.Telnet

远程终端控制协议 建立TCP连接,将操作转换成NVT格式传输到远程,远程还原NVT到操作,将操作结果转换成NVT格式传输到本地,本地显示操作结果。

4.WWW万维网

WWW万维网:从一个站点获取另一个站点信息 超文本(除了文本还有图片视频等) TCP

URL:资源定位符 inerter net定位资源的地址

URL = 协议://主机ip :端口 / 路径

请求一个网页过程:

建立HTTP连接 : 域名解析 +  建立连接

请求网页

返回网页信息

代理服务器(高速缓存):缓存网页内容,无需重新建立连接。

翻墙:通过中间服务器访问资源

两类报文:

请求报文 客户  到  服务器

响应报文 服务器 到  客户

请求报文 方法:

get   : 请求资源

delete : 删除资源

put : 保存资源

post  : 追加信息(修改)

cookies :服务器为用户生成一个唯一的标识码,返回给主机,主机下次再访问这个服务器时就用这个标识码。

html:万维网使用的一种语言,规定了网页的排版命令。

动态网页:提取信息 生成网页

CGI:定义动态文档如何创建

DHCP:动态主机配置,上网之前分配ip等必要信息。UDP报文

DHCP服务器分配的Ip是临时的。主机自动申请延长租用期。

主机---广播--->中继代理服务器------------单播-------->DHCP服务器

5.网络安全

被动攻击:截获

主动攻击:篡改  中断   伪造

数据加密:利用加密/解密 秘钥 进行数据处理 防止数据被他人监控 解析

对称加密体系:所用加密解密秘钥是一个,解密是加密算法的逆运算。

非对称加密: 每个用户有私钥 和公钥,公钥可被他人知道。私钥只有自己持有。 A 向 B发送数据,A先将自己的公钥发送给B,B将自己的公钥发送给A。这时两者都有彼此公钥,向对方发送数据时,用公钥加密即可。

他人无法解密,引用没有私钥。

数字签名:A向B发送报文,为了验证报文确实是A发的。A 将明文 通过A的私钥加密作为签名,发送给B后,B将签名使用A的公钥解密。如果解密后的明文 和 包中明文一样则可以验证是A发送的数据。

鉴别:鉴别通信双方身份,鉴别报文是否被篡改

报文鉴别:

如果只是 报文 + MD5 那么他人也可以伪造报文内容,将自己的报文也组装成 报文 + MD5 格式。 所以发送时要对MD5进行加密,这样他人就无法伪造了。

实体鉴别:整个通信过程只进行一次身份验证

防火墙:网络的访问控制,数据过滤等

验证内容是否被篡改使用 散列函数(A)

验证身份以及内容的私有性使用 秘钥进行加密

六、学习资料下载地址PFD+视频+图解

地址:https://pan.baidu.com/s/1a1g2xJCk6yEhho2IskqTGg

提取码:q1nq

计算机网络五层模型详解相关推荐

  1. TCP/IP五层模型详解

    TCP/IP五层模型详解 应用层 HTTP:简单的明文传输的请求--响应协议 HTTP数据结构: 首行 头部 空行 正文 浏览器的控制 HTTPS 定义 CA认证 SSL加密流程: 混合对称加密过程: ...

  2. OSI七层模型与TCP/IP五层模型详解

    博主是搞是个FPGA的,一直没有真正的研究过以太网相关的技术,现在终于能静下心学习一下,希望自己能更深入的掌握这项最基本的通信接口技术.下面就开始搞了. 一.OSI参考模型 今天我们先学习一下以太网最 ...

  3. OSI七层模型详解物理层、数据链路层、网络层、传输层.....应用层协议

    OSI七层模型详解(物理层.数据链路层.网络层.传输层.....应用层协议与硬件) OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型 ...

  4. 使用pickle保存机器学习模型详解及实战(pickle、joblib)

    使用pickle保存机器学习模型详解及实战 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...

  5. Transformer 模型详解

    Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer.Transformer 模型使用了 Self- ...

  6. TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化。曾在微软雅虎工作,

    TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344  作者简介:汪剑,现在在出门问问负责推荐与个性化.曾在微软雅虎工作,从事 ...

  7. TensorFlow Wide And Deep 模型详解与应用

    Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1].wide and dee ...

  8. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  9. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  10. 数学建模——支持向量机模型详解Python代码

    数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...

最新文章

  1. 一文读懂word embedding
  2. mysql 20小时内_生产环境删除数据库,如何实现在1小时内快速恢复?
  3. 购房占比47.54%,数据揭秘女性偏爱婚前买房背后原因
  4. JavaScript 中的对象拷贝(深拷贝、浅拷贝)
  5. feign整合sential,Feign中使用Sentinel熔断器防止服务雪崩
  6. 深度学习之基于Tensorflow2.0实现AlexNet网络
  7. jzoj3792,P2062-分队问题【贪心】
  8. 世界上最长的博士论文,列入吉尼斯世界纪录
  9. HDU1849 Rabbit and Grass【Nim博弈】
  10. zookeeper 日志查看_zookeeper 安装和集群配置
  11. 超星网络学生登录入口 附使用教程
  12. C语言实现哥德巴赫猜想
  13. JPEG2000编解码 ,JEPG与JEPG2000对比及部分名词及解释
  14. 猜字游戏加关机,你也可以整你的小伙伴哦。
  15. 美国佐治亚大学计算机专业,美国佐治亚大学排名
  16. 怎样看待Android的发展前景?以及Android开发的职业规划
  17. C#读取DWG文件方法
  18. 神经元网络算法的思想,神经元算法大全图解
  19. Android 解压zip压缩包 (压缩包内有多级目录)
  20. 关于TensorFlow中的多图(Multiple Graphs)

热门文章

  1. 微信小程序 转发功能的实现
  2. MySQL-运维工具 pt-archiver数据归档工具
  3. 单片机开发怎么把杜邦线弄整齐?
  4. 3D打印了这个杜邦线理线神器,从此桌面再也不乱了
  5. html杜邦分析图,怎么用Excel做动态杜邦分析图表?
  6. 小鸡模拟器显示无法连接服务器,小鸡模拟器安装不了怎么办
  7. 专访阿里巴巴研究员赵海平:从Facebook到阿里巴巴
  8. AT91SAM9260使用SAM-BA调试BOOT程序
  9. synchronized关键词保证线程安全
  10. 水处理过滤器:常见水处理过滤器的种类大全