网络篇(一)

OSI七层架构:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP网络模型:网络接口层、网际层、运输层、应用层。
五层协议:物理层、数据链路层、网络层、运输层、应用层。

在这里插入图片描述

在这里插入图片描述

一、物理层
物理层考虑的是连接各种计算机的传输媒体上传输数据比特流,而不是具体的传输媒体。

二、数据链路层

数据链路上通过MAC地址发送帧。封装成帧、差错检测、透明传输。虽然数据链路层可以向上提供可靠传输,但一般不在数据链路层实现可靠传输,而在传输层实现。

解决透明传输:字节填充、字符填充。

差错检测:CRC循环冗余检测。在模2运算中,加法不进位,减法不借位,等价于异或操作。

可靠传输
1.停止等待协议
由于发送方发送完一个分组必须停下来等待收到确认后才能发送下一个分组,该协议被称为停止等待协议。超时重传。
2.回退N步协议(GBN)
回退N步协议在流水线传输的基础上利用发送串口来限制发送方连续发送分组个数,是一种连续的ARQ(自动请求重传)协议。基于滑动窗口协议。按序接收、累计确认、超时重传。
3.选择重传协议(SR)
若未按序接收,不再重传,而是保留在接收方,此时接收方窗口不再是1,收齐之后一并交给上层。逐一确认。

点对点协议PPP
特点:1.简单;2.封装成帧;3.透明性;4.多种网络协议和多种类型链路;5.差错检测;6.检测连接状态;7.最大传送单元;8.网络地址协议商。

局域网:网络为一个单位所拥有,且地理范围和站点数目均有限。局域网的数据链路层拆分为逻辑链路控制子层(LLC)和媒体接入控制子层(MAC)。

MAC地址:固化在适配器ROM中的地址。

以太网:一种基带总线局域网。

CSMA/CD协议:以太网的媒体接入控制协议。它是载波监听多址接入/碰撞检测的缩写。
多址接入:说明这是一种多址接入协议,许多站点以多址的方式连接到一根总线上。
载波监听:发送前先监听,即每一个站点在发送数据之前先要检测一下总线上是否有其他站点在发送数据,如果有,暂时不发送,要等待信道变为空闲在发送。
碰撞检测:边发送边监听,即适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送。同时发送,会产生碰撞,需要等待随机时间在发送数据。使用截断二进制指数退避算法来解决碰撞后何时进行重传的问题。

扩展以太网
物理层扩展:使用转发器、集线器、光纤扩展,扩展后产生更大的碰撞域。集线器工作在物理层,每个接口仅仅简单的转发比特。
数据链路层扩展:使用网桥扩展,碰撞域隔离,独立的碰撞域。网桥工作在数据链路层,采用存储转发方式。

无线局域网(WLAN):
基于CSMA/CA协议载波监听多址接入/碰撞避免,无线局域网误码率高,需采用碰撞避免。使用退避算法实现,与CSMA/CD不同,并不是发生碰撞才使用退避算法,而是发送站点检测到信道从忙碌状态变为空闲时,就要执行退避算法。

三、网络层
分组从源主机沿着网络路径到达目的主机。核心功能:分组转发和路由选择。

异构网络互连
四种中间设备:1.物理层使用的中间设备叫做转发器;2.数据链路层使用的中间设备叫做网桥;3.网络层使用的中间设备叫做路由器;4.网络层之上的中间设备叫做路由器。

IP地址及编址方式
1.分类编址
IP地址::={<网络号>,<主机号>}
A、B、C类网络号字段分别为1,2,3个字节,类别位分别为0,10,110。
D类前四位1110,用于多播。
E类前四位1111,保留。

2.划分子网
IP地址::={<网络号>,<子网号>,<主机号>}

3.无分类编址
IP地址::={<网络前缀>,<主机号>}
地址掩码用于划分子网,用来表示长子网络号部分的长度,被称为子网掩码。
已知IP地址和子网掩码,可得到网络前缀。

地址解析协议(ARP):
解决IP地址与物理地址的动态映射问题。APR解决这个问题的方法是在主机ARP高速缓存中应存放一个从IP地址到物理地址的映射表,并且这个映射表不断动态更新的。网络层使用的是IP地址,但在具体物理网络链路上传送数据帧时,最终还是需要使用该网络的物理地址。

网际控制报文协议ICMP
允许主机或者路由器报告差错情况和提供有关异常情况的报告。种类:ICMP差错报告报文和ICMP询问报文。如PING命令,没有经过运输层。

因特网的路由选择协议
内部网关协议RIP:是一种分布式的基于距离向量的路由选择协议。
内部网关协议OSPF:开放最短路径优先,基于迪杰斯特拉算法。
外部网关协议BGP:边界网关协议,BGP只能力求寻找到一条能够到达目的网络且比较好的路由,而并非寻求一条最佳路径,但却需要能根据策略进行路由选择。

路由器:工作在网络层,路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。内部维护了一个路由表。
路由器和交换机的区别:两种都是基于存储转发的分组交换设备,一种是工作在网络层,利用IP地址转发分组的路由器;另一种工作在数据链路层,利用MAC地址转发分组的交换机,交换机实质上是一个多接口网桥。

VPN:虚拟专用网络。在因特网中的所有路由器,对目的主机是专用地址的数据报一律不进行转发。
专用地址,又称为可重用地址:
10.0.0.0到10.255.255.255(或记为10/8,它又称为24位块);
172.16.0.0到172.31.255.255(或记为172.16/12,它又称为20位块);
192.168.0.0到192.168.255.255(或记为192.168/16,它又称为16位块).
采用专用IP地址的互联网络称为专用互联网或本地互联网,简称专用网。
进行通信方式:1.租用电信公司的通信线路为本机构专用;2.利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网(VPN)。可以使用IP隧道技术实现虚拟专用网。

NAT:网络地址转换。NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。这种方式专用网络连接到因特网的路由器上安装NAT软件。

IPv6:32位增大到128位。IPv4到IPv6过度方式:双协议栈和隧道技术。

四、运输层
运输层向应用层提供端到端的通信服务。网络层是为主机之间提供逻辑服务,而运输层为应用进程之间提供端到端的逻辑通信。

UDP用户数据报协议:
UDP是一种无连接的、不可靠的、尽最大努力交付的、没有拥塞控制和流量控制的数据报服务。支持一对一、一对多、多对多、多对一的交互通信。

TCP传输控制协议:
TCP是一种面向连接的、可靠的、拥有拥塞控制和流量控制的字节流服务。仅支持一对一服务。提供全双工通信。

TCP的可靠传输
1.数据编号与确认
一个字节一个编号,采用累计确认。接收方的确认号是已按序收到的数据最高序列加1.
2.以字节为单位的滑动窗口
TCP采用以字节为单位的滑动窗口,而不是分组数。
3.超时重传时间的选择
RTO=RTTs+4xRTTd
4.快速重传
当发送方收到连续收到重复的确认时,触发快速重传。是超时重传的补充和改进。
5.选择确认
一个可选择的功能,而不使用累计确认。

TCP的流量控制
解决因发送方发送数据太快而导致接收方来不及接受,使接收方缓存溢出的问题。流量控制的基本办法就是接收方根据自己的接受能力控制发送方的发送速率,即改变发送方的发送窗口大小。

TCP的连接管理
1.TCP建立连接
三次握手过程:
在这里插入图片描述
主机A的TCP向主机B的TCP发出连接请求报文段,其首部的同步位应置1,同时选择一个序号seq=x;
主机B的TCP收到连接请求报文段后,若同意,则返回连接请求确认。在确认报文段中应将SYN=1和ACK=1,确认号ack=x+1,自己也选择一个序号seq=y;
主机A的TCP收到主机B的连接确认后,还要向主机B给出确认,其ACK=1,确认号ack=y+1,而自己的序号seq=x+1。TCP的标准规定,SYN=1的报文段不能携带数据,但要消耗一个序号。注意,A发送的第二个报文段中SYN=0,ACK=1。该报文段是对B的同步报文段的确认,但是是一个普通报文段,可携带数据。若该报文段不携带数据,按照TCP规定,确认报文段不消耗序列。

为什么要三次握手?
防止已失效的连接请求又回到了主机B上,产生错误,造成主机B的资源浪费。
举个栗子:主机A发出了连接请求,但过了超时时间还未收到主机B的确认,出发超时重传。第二次连接收到确认,传送完数据释放连接。但是第一次的连接请求并没有丢失,而是在网络中滞留时间太长而未到主机B,以致双方发送完数据释放连接之后才到达主机B。本来是一个失效的报文段,又重新回到了主机B上,主机B以为主机A又要建立连接,则主机B给予确认,但是主机A并没有想建立连接,不理睬主机B的确认,但是主机B以为连接建立了,一直等待主机A发送数据,造成了主机B的资源浪费。

2.TCP的连接释放
在这里插入图片描述
主机A向主机B发送连接释放请求,表示自己没有数据要发送了,此时将首部中的FIN=1,seq=u。FIN报文段要消耗序列号。
主机B收到主机A的连接释放请求发出确认,ack=u+1,ACK=1,自己的序列号假定v(v是最后收到一个字节的序号加1),即seq=v。连接状态变为半关闭状态。此时主机B不接受主机A发送的数据,但主机B可以发送数据给主机A。
主机B数据发送完毕,没有数据要发送了,向主机A返回一个确认报文段,即FIN=1,ACK=1,seq=v(确认报文段不消耗序列),ack=u+1。
主机A返回确认报文段,即ACK=1,seq=u+1,ack=v+1。此时整个连接已经释放完毕。

TCP的拥塞控制
拥塞控制就是防止过多的数据注入到网络之中,这样可以使得网络中的路由器或链路不致过载。考虑到拥塞控制和流量控制都要改变其发送窗口大小。此时发送窗口上限值=MIN[rwnd,cwnd]。rwnd是接受窗口大小,cwnd是拥塞窗口大小。

1.慢启动和拥塞避免
TCP定义了一个慢启动门限ssthresh(即从慢启动到拥塞避免的门限值):
cwnd<ssthresh:使用慢启动算法即指数增长。
cwnd>ssthresh:使用拥塞避免算法,即线性增长。
cwnd=ssthresh:既可以使用慢启动,也可以使用拥塞避免。

大致过程:
在这里插入图片描述
2.快速恢复
连续收到三个重复ACK时,就重新设置慢启动门限,减半。
然后从慢启动门限直接执行拥塞避免算法。这点与上述不一致。

五、应用层
网络应用程序体系结构
1.客户/服务器体系结构
2.对等体系结构(P2P)

域名系统DNS
采用层次结构的命名树作为主机的名字,并使用分布式域名系统。
域名到IP地址的转换是由若干个域名服务器程序完成的。这种域名到IP地址的转换过程叫域名解析。

万维网WWW
万维网并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所,是运行在因特网上的分布式应用,现在经常只用一个英文Web来表示万维网。

统一资源定位符URL
要访问万维网页面就需要地址。为了方便地访问在世界范围的文档,万维网使用定位符。统一资源定位符是在因特网上指明任何种类”资源“的标准,URL本质上就是一种应用层地址。它实际上是 URI 的一个子集。我们所说的”网址“。
格式:<协议>://<主机>:<端口>/<路径>

统一资源标识符URI:使用它就能够唯一地标记互联网上资源。URI 不仅包括 URL,还包括 URN(统一资源名称)。

HTTP协议
超文本传输协议,基于运输层TCP协议,是一种无状态协议,即服务器不保留客户的任何状态信息。

1.操作过程
点击一个超链接,发生的事件有哪些?举个栗子:点击”清华大学设置“连接,对应URL:http://www.tsinghua.edu.cn/chn/yxsz/index.htm。
1)浏览器分析连接指向页面的URL;
2)浏览器向DNS发出请求解析域名"www.tsinghua.edu.cn"的IP地址;
3)域名服务器解析得到IP地址为:166.111.4.100;
4)浏览器与服务器建立TCP连接,IP:166.111.4.100,端口:80;
5)浏览器发出取文件命令:GET/chn/yxsz/index.htm;
6)服务器给出响应,把文件index.htm发送给浏览器;
7)释放TCP连接;
8)浏览器显示index.htm内容。

2.非持续连接和持续连接
HTTP/1.0采用非持续连接方式,即一次请求/响应一个TCP连接,收到响应后立即释放连接。
HTTP/1.1采用持续连接方式,即万维网服务器发送完响应后任然保持这条连接。还可以使用流水线方式,即浏览器收到响应之前就能够连续发送多个请求报文。

3.HTTP的报文结构
1)请求报文——从客户向服务器发送请求报文
2)响应报文——从服务器到客户的回答

HTTP的请求报文和响应报文由三部分组成。这两种报文格式区别在于开始行不同。
(1)请求行/状态行,请求报文第一行叫做请求行,响应报文第一行是状态行。第一行三个字段由空格分隔开,最后的”CR“和”LF“是回车和换行。
(2)首部行,用来说明浏览器、服务器或报文主体的一些信息。首部行可以有多行,每一个包含字段名和值,末尾用回车和换行。整个首部行结束后,还有一个回车和换行符号,用于区分首部行和主体。
(3)实体主体,在请求报文中一般不使用这个字段,而在响应报文中通常就是返回给客户的文档,这可以没有这个字段。

请求行:方法、URL、版本三个字段。
方法是对所请求的对象的操作。
HTTP请求报文的一些方法:
OPTION:请求一些选项信息。
GET:请求URL标志的文档。
HEAD:请求URL标志的文档首部。
POST:向服务器发送数据。
PUT:指明的URL下存储一个文档。
DELETE:删除URL所标志的文档。
TRACE:用来进行环回测试的请求报文。
CONNECT:用于代理服务器。

状态行:版本、状态码、以及解释状态码的短语三个字段。
状态码都是三位数字的,分为5大类33种。例如:
1xx:表示通知信息的,如请求收到了或正在进行处理。
2xx:表示成功,如接受了或知道了。
3xx:表示重定向,表示要完成请求还必须采取进一步的行动。
4xx:表示客户差错,如请求中有错误的语法或者不能完成。
5xx:表示服务器的差错,如服务器失效无法请求。
常见的:200:成功,400:错误的请求,404:页面找不到,500:服务器出错了,301:永久转移了,503:服务器超负载或停机维护。

HTML超文本标记语言
它是这一种制作万维网页面的标准语言。

动态文档:是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建,其内容通常来源于数据库,并根据请求报文中的数据动态生成。例如JSP。
静态文档:是指该文档制作完毕后就存放在万维网服务器中,被用户浏览过程中,内容不会改变。
活动文档:使用了脚本程序的HTML,如js,可以使得浏览器无需请求服务器页面可以改变。

SMTP:简单的邮件传送协议。基于TCP。

POP3和IMAP:邮件读取协议。

FTP:文件传送协议。基于TCP。
基本原理:FTP服务器进程由两大部分组成:一个主进程,负责接受新的请求;若干从属进程,负责处理单个请求。
需要建立两个连接:控制连接和数据连接,控制连接在整个会话期间一直保持打开,传送各种命令,以及服务器端状态响应。而数据连接用来传输文件。

TELNET:远程终端协议。

DHCP:动态主机配置协议。

RTP:实时运输协议。基于UDP。

六、网络安全
对称密钥密码体制:是一种加密密钥和解密密钥相同的密码体制。

公钥密码体制:采用不同的加密密钥和解密密钥。加密密钥(公钥)PK是公开信息。解密密钥(私钥)SK是需要保密的。

数字签名:如生活中常见栗子,使用印章和亲笔签名来证明书信或文件的真实来源,计算机网络中对报文签名保证其真实来源就是数字签名。

数字签名需要保证以下三点:
1)接收方能够核实发送方对报文的数字签名;
2)发送方事后不能抵赖对报文的数字签名;
3)任何人包括接收方都不能伪造对报文的签名。

同时实现秘密通信和数字签名过程如下:
1)发送发A使用A的私钥运算进行数字签名;
2)发送方A使用接收方B的公钥加密;
3)接收方B收到加密报文后,使用B的私钥解密;
4)接收方B使用A的公钥进行运算,得到报文。

网络各层的安全实例
物理层实例:信道加密机。
数据链路层实例:802.11i。
网络层实例:IPsec。
运输层实例:SSL/TLS。SSL译为安全套接字层;TLS译为运输层安全。TLS基于SSL3.0基础之上建立。SSL工作过程:1)协商加密算法;2)服务器鉴别;3)会话密钥计算;4)安全数据传输。
应用层实例:PGP。安全电子邮件软件。加密、数字签名、压缩等功能。

防火墙:是把一个组织的内部网络与其他网络隔离开的软件和硬件的组合。根据访问控制策略,允许一些分组通过,而禁止另一些分组通过。一般防火墙内部的网络为“可信网络”,而外部的因特网称为“不可信网络”。
基本原理:
1)分组过滤路由器:将进出内网的分组丢弃或者过滤。
2)应用级网关:代理服务器,代理服务器对进出内外网的应用报文进行身份验证,根据身份对用户行为进行访问控制。
3)个人防火墙:安装在个人计算机上的应用程序,作用类似与分组过滤器。

IDS:入侵检测系统
在入侵已经开始进行检测,防止更大的损失和危害。

网络攻击:1)网络扫描 ;2)网络监听;3)拒绝服务攻击(DoS)。

七、其他
TCP粘包和拆包:Tcp是个“流协议”,所谓流,就是没有界限的一连串数据,没有界限。TCP底层不了解业务数据的含义,它会根据TCP缓冲区的实际情况进行包的划分,所以业务上认为,一个完整的包可能被TCP拆分为多个包进行发送,也可能把多个小包封装成一个大的数据包进行发送,这就是所谓的TCP粘包和拆包问题。

粘包/拆包原因:
应用程序write写入的字节大小大于套接口缓冲区的大小
进行MSS大小的TCP分段
以太网帧的payload大于MTU进行IP分片

粘包问题解决方案:
由于底层无法理解上层的业务数据,所以底层是无法保证数据不被拆分和重组的。只能通过设计上层的协议栈来解决,业界的方案可归纳如下:
消息定长,例如每个报文固定200字节,如果不够,空位补空格
在包尾增加回车换行符进行分割,如FTP协议
将消息分为消息头和消息体,消息头中包含消息的长度,字段等信息
更复杂的应用层协议

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值