计算机网络学习笔记

ISP internet service provider 互联网服务提供商

交换机:允许两个网络直接相连交换分组,不需要通过第三个网络来转发分组。

计算机之间的通信,其实就是一个主机上的某个进程与另一个主机上的某个进程进行通信。

通信分类

主要分为客户-服务器(c/s)模式和对等通信(peer to peer)。常见的大多数是cs,像迅雷下载这种,是p2p.

路由器用途

做分组交换用,主要是转发收到的分组。

电路交换

整个报文的比特流连续的从源点到达重点,好像在一个管道中传送。

有点类似火车轨,要通行前先建立专用物理链路,过去后再拆开让别的车次使用。特点:在通话的全部时间内,通话的两个用户始终占用端到端的通信资源。

电路交换效率低,因为请求都比较短暂、突发。每次需要建立连接,交换数据,释放连接。真正用来传输数据占用的时间很小。

报文交换

太慢了,弃用。整个报文先传送到相邻节点,全部存储下来后再查找转发表,转发到下一个节点。(相当于是报文没拆分,一次发送的单位过大)。

分组交换

把报文拆分成几个分组,每个分组带上header,header里有控制信息,包含目的地址,源地址等重要信息。路由器根据header里的信息,再查找路由表,转发到正确的地址。

问题:

分组在各个路由器存储转发时需要排队,会造成一定的时延,而且带宽不能保证。而且带了header会增加一点开销。

三种优劣:

传送大量数据,传送时间远大于连接时间,这时候电路交换比较快;报完交换和分组交换不需要预先分配传输带宽,在传输突发数据时可以提高整个网络信道的利用率。由于分组长度小于整个报文的长度,所以分组交换的时延比报文交换小。

带宽

在单位时间内,网络中某信道所能通过的最高数据率。也就是网速。1M/s

往返时间RTT Round-Trip Time

双向交互一次所需时间。

传输控制协议TCP transimission control protocol

提供面向连接的、可靠的数据传输服务。传输单位是报文段

用户数据报协议 UDP user datagram protocol

提供无连接的、尽最大努力的数据传输服务,传输单位是用户数据报。不保证数据传输的可靠性。

数据链路层要解决三个问题

1.封装成帧,在分组的数据头部和尾部添加控制信息。用SOH代表开始,EOT代表结束。

2.透明传输。分组中的输入如果有SOH或者EOT则需要转义。

3.差错检测。一般是用循环冗余校验法CRC。如果检测到帧数据不对就丢弃这个帧。

数据链路层只保证无比特差错,不保证无传输差错。传输差错包括帧重复、帧乱序。

PPP协议

点对点协议,种子下载会用到。用户计算机和ISP通信也用的点对点协议。

一、概述

ISP

internet service provider 互联网服务提供商,比如中国移动

交换机 IXP

允许两个网络直接相连交换分组,不需要通过第三个网络来转发分组。主要是isp之间用的。横向连接

路由器

分组交换

RTT round-trip time

往返时间,请求到返回。

二、物理层

信道复用

时分复用

频分复用

波分复用

码分复用

三、数据链路层

主要使用点对点信道和广播信道。主要解决封装成帧、透明传输和差错检测三个问题。

使用点对点信道的数据链路层

1.封装成帧

在数据前后加一个标记,如果标记确实则丢弃该数据重新传输。

2.透明传输

上面的开头、结尾控制字符万一数据里有一样的,就错误找到开头或者结尾了。解决方法是:在数据中,遇到和控制字符一样就加esc,如果有esc就再加一个。读数据的时候如果是esc加控制字符就把esc拿掉。

很简单的设计,相当于转义。

3.差错检测

比特差错:有可能发的0、1有不对的。一般是循环冗余校验法。

帧丢失、帧重复、帧失序用循环冗余校验法解决不了。现在如果通信环境不好则在链路层有确认和重试机制。通信环境好就没有这些。

点对点协议 point to point protocol ppp

迅雷这种会用

使用广播信道的数据链路层

局域网

局域网接入主要是随机接入。如果恰好有两个或者更多的用户同时发信息,就会有冲突,导致大家都失败。

CSMA/CD协议

仅支持半双工通信。

多点接入

总线型网络,都连在路由器上。

载波监听

检测总线上是否有其他计算机也在发送。所有的都要检测

碰撞检测

一边发一遍监听,别也也发了网卡要立即停止发送。

MAC地址

一般收到帧后会对比地址,如果不一样则不接收。有一种混杂模式,啥帧都接收,就实现了网络监听。

在数据链路层扩展以太网

最早是网桥。网桥根据mac地址进行转发和过滤。交换机淘汰网桥了。

交换机

交换机其实就是个多接口的网桥。全双工模式。淘汰了使用CSMA/CD协议的总线以太网。

四、网络层

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。

ip=网络号+主机号 c类ip前三位都是网络号,最后一位是主机号。每一个网络号可以有255个ip。

ip分为网络号和主机号的好处

  1. ip地址管理机构只分配主机号,网络号由得到主机号的单位自己分配,方便ip地址的管理
  2. 路由器仅根据目的主机锁连接的网络号来转发分组(不考虑目的主机号),这样可以减少路由表所占用的存储空间以及查找路由表的时间。

ip是 标志一台主机(或者路由器)和一条链路的接口。

一个网络是指具有吸纳沟通网络号的主机的集合。因此,用转发器或者网桥连接起来的若干局域网仍为一个网络。

ip地址与硬件地址的区别

物理地址是数据链路层和物理层使用的地址,而ip地址是网络层和以上各层使用的地址,是一种逻辑地址。

发送数据的时候,数据从高层到底层,然后才到通信链路上进行传输。是哟用ip地址的ip数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的原地址和目标地址都是硬件地址。这两个硬件地址都写在MAC帧的首部。

连接在通信链路上的设备(主机或者路由器)在收到MAC帧的时候,根据MAC帧首部中的硬件地址决定收下或者丢弃。只有在剥去MAC帧的首部和尾部后把MAC帧的数据上交给网络层后,网络层才能在ip数据报的首部中找到源ip和目的ip地址。(也就是说带了mac和ip)

总之,ip数据报首部带了ip地址,mac帧首部有mac地址,mac帧包裹了ip数据报。

数据帧在路由器分组转发过程中,MAC帧中的mac地址转一次变一次,丢弃原来的,包装上现在的,替换为新路由器的地址,而ip是不变的。

问题:

  1. 主机或者路由器怎样知道MAC帧中的mac地址应该填啥,每次转发都会变?
  2. 路由器中的路由表是怎么得出的?

ARP协议

能根据ip地址得到MAC地址。

网络层使用的是ip地址,但是在实际网络的链路上传送数据帧的时候,最终还是必须使用MAC地址。网络上随时会连入或者退出主机。硬件地址老会变化。

ARP会维护一个map,存ip和mac的关系,并且这个map会经常动态更新,类似定时任务。

ARP使用举例

当主机A要想本局域网的主机B发送ip数据报的时候,先在ARP的map里找有没有B的ip,如果有就拿到B的MAC地址,把B的MAC地址写入数据报的MAC帧,最后通过局域网把MAC帧发送到B。

当B刚入网,ARP的map里还没有B的ip,或者ARP刚加电,map是空的。在这种情况下,A自动运行ARP,不等定时任务了,然后步骤如下:

  1. 首先向B发数据肯定是知道B的ip的。A主机的ARP进程在本局域网上发送一个ARP请求分组,ARP请求分组的主要内容是:“我的IP是192.168.1.1,硬件地址是abcde 我想知道ip地址为192.168.2.2的主机的硬件地址”。
  2. 每个主机都可以运行ARP的定时任务。在本局域网上所有主机上运行的ARP进程都收到此ARP请求分组。
  3. 主机B的ip地址与ARP请求分组中要查询的IP地址一致。其他主机的ip地址都不是这个ip,其他主机都不搭理这个请求。B主机回话了:“我的ip地址是192.168.2.2 我的MAC地址是djofjsof” 。这个有点类似在人群里里喊,张三家住哪里。张三听到了给个回答。A和B互相通话完后就互相留地址了。都在ARP的map里维护对方的ip和MAC地址,以后互相通信就方便了。

ARP缓存淘汰

ARP对缓存中的每一条数据都设置生存时间(例如10~20分钟),搞个定时任务清理。这样搞是因为B的硬件可能坏了,换了MAC地址,不清理就有问题。这种其实动态分配ip,断网重连一下就行了。会插入新的一条。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0j2XmHfP-1651457924898)(C:\Users\pxm

像上图,如果H1和H2在一个网络上,直接在ARP内找到H2的MAC就能和H2通信。

如果H1想和H3通信,H1在网1上发ARP请求也找不到H3的ip,或者网络号不一样,直接去找路由器了。H1先找到路由器R1的MAC,先发给路由器R1,R1在网2上发送ARP请求找到了H3,ok可以通信了。

如果H1想和H4通信,先到R1,R1在网2找不到,转到R2,R2在网3发ARP,这时候找到H4的ip和MAC,能通信了。

相当于H1喊H2,在一起能喊通。H1喊H3,没人回应,让R1路由器去网2喊。喊到了。数据由R1代传过去。

既然最终是通过MAC传输的,为什么还要ip地址?

不同网络不同硬件地址,硬件地址转化起来太难了。ip的话就能统一管理。

待转发的数据怎么知道下一跳的路由器是哪个?

当路由器收到一个待转发的数据报,在路由表得出下一跳路由器的ip地址后,不是把这个地址填入ip数据报,而是送交数据链路层的网络接口软件,网络接口软件负责把下一跳路由器的ip转化为MAC(必须使用ARP)。并将得到的MAC地址放在MAC帧的首部,就能转发到下一跳路由器。

划分子网

在这里插入图片描述
ip总长固定32位,abcde类ip,都是网络号加主机号,网络号占的位数多,主机数就少一点。网络号占用的内存越小,就能表示更多的主机数量。

192.168开头的都是内网使用的。

以前ip分为abcd类,叫有类编址,后来了改了。

一个单位可以划分多个子网,对来仍然表现为一个网络。

有类ip缺点:c类不够用,b类浪费太多

这时候 ip=网络号+子网号+主机号。现在都是这种。子网号占用的位置是主机号里面的。在主机号固定的情况下,子网号站的越多,划分的子网就越多,而子网里的主机数就越少。

子网掩码

ip数据报只带了个网络号,无法知道源主机或者目的主机所连接的网络是否进行了子网划分。

假设主机号八位,子网占两位就是2的2次方个子网,每个子网的主机就是2的六次方个。

子网掩码是必须的,如果不设置会有默认值。

子网掩码和ip数据报中的目的ip做and操作,可以求出需要到达的子网。

子网位数越大,里面所能包含的ip就越少,不是每个子网255.

使用子网时分组的转发

使用子网划分后,路由表中必须多加一个子网掩码。

CIDR

无类域间路由。不再区分abcde类地址了。网络号+子网号统称为网络前缀,可以是任意长度。

在这里插入图片描述
23就是prefix的位长。

cidr现在用起来了,但是一般内网不会用,看ip都不是那种格式。

ICMP网际控制报文协议

主要是允许主机或者路由器报告差错情况和提供有关异常情况的报告。

报文分为两种:ICMP差错报告报文和ICMP询问报文。

应用距离:ping ip看连通性

互联网路由选择协议

DHCP协议

一种是在界面填写固定ip,一种是从服务器动态获取ip。有个DHCP服务器。

NAT网络地址转换


内网ip需要通过NAT转换为公共ip。在内网发发是不需要的。

NAT实现方式

在这里插入图片描述
一个NAT对应一个公共ip地址可以区分六万多个端口号,因此NAT一个公共ip支持六万多个并行连接。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IPv6

128个bit位,比ipv4长多了

路由算法

在这里插入图片描述

网络是一个图,求最短路径。

路由分为静态路由和动态路由。静态路由是人工指定的,动态路由是路由算法自己算出来的。

在这里插入图片描述

这个图算法看不懂,还是算了,了解就行了。

层次路由

网络规模太大的时候,路由表太大了,有的好几亿。需要搞个层次路由。

路由选择协议两类

内部网关协议IGP

在一个自治系统内部使用的路由选择协议。

IGP具体分为RIP和OSPF,RIP用的很少。

OSPF协议的基本特点

主要是使用分布式的链路状态协议。RIP是距离向量协议。

这一块儿的算法挺有意思

ip多播

微信群发消息,可能就是ip多播实现的或者看电视,一个节目多个电视看。

网络层还是要多研究一下

外部网关协议EGP

源主机和目的主机不在一个自治系统内,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择传递到另一个自治系统中。这个就是EGP协议。

五、运输层

TCP和UDP属于运输层协议。

运输层功能

多路复用和分用

复用指在发送方不同的应用进程可以使用同一个运输层协议传送数据,分用指接收方的运输层在剥去报文的首部之后能够把这些数据正确的交付到目的应用进程。

\   )]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

tcp一个客户机进程对应一个服务进程。udp是多个客户机进程对一个服务进程。以前是进程,现在是线程了。

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

运输层包含差错检测功能。

软件端口是应用层的各种协议进程与运输尸体进行层建交互的一种地址。

UDP

无连接、尽最大努力交付、面向报文、没有拥塞控制。

在这里插入图片描述
在这里插入图片描述

TCP

面向连接、可靠交付。

TCP可靠传输的工作原理

理想的传输条件
  1. 传输信道不产生差错。
  2. 不管发送方以多块的速度发送数据,九兽坊总是来得及处理收到的数据。
达到理想传输条件的方法
  1. 协议控制出现差错让发送方重传出现差错的数据。
  2. 接收方来不及处理收到的数据时,及时告诉发送方适当降低发送速度。
停止等待协议

在这里插入图片描述
超时重传:a向b发送数据,b在接收报文的时候出现差错就丢弃报文,b不会给a返回确认。a在一段时间没收到b发来的确认后就重发这份数据。

a在给b发完数据的时候,先不删这个数据,待b返回响应后再删。因为有可能这个报文还需要重试。

分组和确认分组都要设置编号,来区别哪些分组收到确认,哪些分组没收到确认。

确认丢失和确认迟到

在这里插入图片描述
b收到正常的数据但是返回确认信息超时,或者没有返回。这时候a会重发一个分组过来,这样b收到重复的分组会丢弃。然后给a发个确认消息。

上面发一个确认一个太慢了。一般采用流水线传输,同时发多个确认多个。流水线传输需要使用连续ARQ协议和滑动窗口协议。

连续ARQ协议

在这里插入图片描述

接收方一般采用累计确认。对按序到达的最后一个分组发送确认。

优点:容易实现,即使确认丢失也不必重传。缺点:不能向发送方反映出接收方已经正确收到的所有分组信息。

上面如果第三个分组丢失了,那345都要重传,在通信线路质量不好的情况下,会带来负面影响。

什么是可靠

不错、不丢、不乱

TCP可靠传输的实现

rdt1.0理想情况下,实际达不到.

在这里插入图片描述
在这里插入图片描述

停-等协议

等待调用、等待返回ack或者nak

rtd2.0不考虑ack和nck的错误,万一ack或者nak有问题,还是不行。

[]
在这里插入图片描述
在这里插入图片描述

连续ARQ协议

GBN go-back-n

窗口为n,最多允许n个分组没有被确认。
如果发送方发送了前5个分组,而中间的第3个分组丢失了,这时候接收方只能对前面两个分组发出确认。发送方无法知道从第三个开始,后面三个分组是啥状况,只好把从第三个开始,后面的三个分组都重传一次。意思就是需要再回退回来重传已发送过的N个分组。这种在通信线路质量不好时,连续ARQ协议会带来负面的影响。

滑动窗口协议

滑动窗口是以字节为单位的。

SR协议 selective repeat协议

TCP

窗口尺寸根据拥塞控制机制和流量控制机制来设置的。
在这里插入图片描述
tcp也是点对点通信?tcp不是百分之百gbn也不是百分之百sr。

TCP链接管理

在这里插入图片描述

为什么需要三次握手

在这里插入图片描述
几百万台同时向服务器发请求,如果不执行第三步的确认,服务器就分配资源,会给服务器造成灾难性的后果。
最后一次确认是为了防止已失效的连接请求报文段突然又传送到了B,因而差生错误。

“已失效的连接请求报文段”产生

正常情况

A发出连接请求,但是因连接请求报文丢失而未收到确认。于是A再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接。A宫发送了两个连接请求报文段,其中第一个丢失,第二个到达了B,没有“已失效连接请求报文段”,

异常情况

A发出的第一个连接请求报文段没有丢失,而是在某些网络节点长时间滞留了,一时延误到连接释放以后的某个时间才到达B。本来这是一个早已经失效的报文段。但B收到此失效的连接请求报文后,就误认为是A又发出一次新的连接请求。于是就向A发出确认报文段,同意建立连接。假定不采用第三个握手,那么只要B发出确认,新的连接就建立了。
由于A并没有发出建立连接的请求,因此不会理睬B的确认,也不会向B发送数据。但是B却以为新的运输连接已经建立了。,并一直等待A发来的数据。B的许多资源就白白浪费了。主要是避免网络攻击。
在这里插入图片描述
两次算的y一样,说明是一个正常请求。

tcp链接关闭

在这里插入图片描述
在这里插入图片描述
TCP不是马上释放掉的,有一个TIME-WAIT的状态,一般建议两分钟。主要是为了保证最后发送的报文能送达,同时防止“已失效的连接请求报文段”出现在本连接中。等一会儿就可以使本连接持续的时间内所产生的所有报文段都在网络中消失。
TCP还有一个保活计时器keepalive timer 有时候客户机出现故障,会探测,探测十次没响应就关闭连接了。

TCP拥塞控制

在这里插入图片描述

六、应用层

FTP

文件传送协议,传输整个文件。

NFS

支持修改部分文件再提交上去。

TELNET

远程桌面协议

HTTP

1.0默认短连接,1.1默认长连接。
短连接缺点:每一次连接都是2倍RTT。
长连接:客户端持有服务器连接一段时间,不释放。缺点是用户数不能太大,要调优的。调keepalive的释放时间,默认两个小时,改小点。然后改linux目录,改多一点。并发多和用户数多不一一个概念。用户数多要的是连接多。并发多可以是一个用户发送多次,利用同一个连接。

代理服务器

nginx,缓存请求和响应,完全一样的就在代理服务器处理就好了。

cookie

在网页上不登录京东就能加购物车。缺点是隐私性不太好,有点争议。

七、网络安全

现在是一个一级学科了。
预防被端口扫描:
分析到达的流量,找出可以的活动。
设置混杂模式可以收到所有的报文。

密码学

加密算法基本都是公开的,主要是加密的数据不一样。加密和解密的秘钥不对,也获取不了明文。这种是公钥和私钥的方式。
对称加密:加密和解密的秘钥一样。比如单个字母替换。
非对称加密:加密和解密的秘钥不一样。接收方发出公钥给发送方,发送方拿到公钥后加密然后发送,只有接收方自己的私钥才可以解开,完美。
这种要么暴力破解或者入侵拿到私钥。
或者统计分析。人工智能分析字符出现的频率,然后组合。

传统加密方法

利用一种字符替代另一种字符,类似电视上那种电报。或者古代打仗那种。
换位置,搞个位置表,重新排序,再恢复。
或者搞个矩阵。

现代加密技术

在这里插入图片描述
网络安全中用分组密码更多些。

DES 数据加密标准

废弃了,早都不做为数据加密标准了。现在优化是3DES,3层的des,用的也挺广泛。

AES 高级加密标准

公钥加密开销有点大。
在这里插入图片描述
在这里插入图片描述

秘钥分发问题

用可信的秘钥分发中心。

身份认证

确认通信对方的正确身份。

报文完整性

利用密码散列来防止报文被篡改。
报文和报文摘要同时发送,然后收到后再求报文摘要看和传过来的摘要是否一致。
在这里插入图片描述

数字签名

数字签名保证是确定的某一个人发送的,让发送者不可抵赖。也要保证发送过程中报文没有被篡改。

报文鉴别

MD5和SHA-1
MD是message digest的缩写,报文摘要
md5容易被攻击,现在主要是SHA-1了。

难点

运输层、网络层、网络安全

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值