- 计算机网络的主机节点(方的,数据的源或目标)和数据交换节点(圆的,按工作层次的不同可分为:中继器、交换机、路由器等)。
- 和方的有关就叫接入点,两个圆的就是骨干节点。
- 端系统称为end system 或者 host。
- 互联网网络结构:网络边缘、网络核心(作用:数据交换)和接入系统。
- tcp通信前除握手外,还具备保序、流量控制(发送方不会淹没接收方,根据接收方的接收能力发送)和拥塞控制(发生拥塞时,发送方降低发送速率)
- 网络核心:电路交换。将带宽分成片采用频分(fdm)、时分(tdm)和波分(wdm);分组交换:采用虚拟电路网络(有连接,每个分组带虚电路号存储转发)或者数据报网络(无连接,不维护状态,每个分组都带有完整的ip地址,存储转发,可能无序)。有排队和延迟,可能会丢失。例子:如果网络链路带宽为1Mbps,假设用户活跃是100kbps,但只有10%的时间活跃,以上两种模式最多能为多少用户服务。电路交换的因为是独享,就是1Mbps/100bps=10个。 分组比如服务35个,最多一次服务10个对象,只有0.4%的情况下不支持35个。分组交换能支持的用户多一些。
- 传播延迟在局域网可忽略,但在广域网时不能。因为物理距离太远了。
- 因特网服务提供商(Internet Service Provider, ISP)
- 分组延时:1节点处理延时;
- 2排队延时;
3传输延时;
4传播延时。
- Tracert www.baidu.com 在windows测试。
- icmp报文,向目标请求时,被干掉或者其他原因会返回一个icmp报文通知源,达到测试延时时间。
- 上层到下层,sdu(服务数据单元)
- 物理层比特的传输,链路层帧的传输,网络层端到端的传输,传输层区分进程和加强网络服务不可靠变为可靠。
- Tcp的socket ,
- Udp的socket
- 采用以上两个就可以不用每次传输时都带上ip和端口号,省去了麻烦。
- ssl因为tcp和udp不加密,被抓取后可直接分析。通过ssl提供安全。
- https相当于就是浏览器跑在ssl上在tcp上运行。
- 安装本地缓存减少发出请求等待时间,通过条件查询达到,服务器更新了,就能获取到最新的返回,而不会一直都用之前存的。
- http持久和非持久
- ftp文件传输协议,数据和控制是在两个tcp上完成的,带内的叫数据传输,带外的是控制命令的传输。
- 原始的smpt只能传输ascii码,中文字符这些没在里面的需要先通过其他的转然后到那边再转回来
- DNS,域名系统。不用记ip而是记域名,就像www.baidu.com。dns系统需要解决的三个问题:命名、解析和维护。解决命名问题:主机的域名是树叶往上走到树根例如robot.ai.cs.yale.edu,域的域名是树枝往上走例如耶鲁大学的计算机系的域名为cs.yale.edu。解决解析问题:划区域,每个区域解析该区域的,每个区域是独立的。解决维护问题:通过保存资源记录(RR)的分布式数据库,进行下面的增删改查,就可以达到维护目的。
- TLD(顶级域)服务器,负责维护顶级域名和所有国家的顶级域名。
- class在internet里面是IN;TTL是time to live有长期和短期,长期代表的是权威,短期是缓存;DN是域名;value存的是ip地址;type:不同值表示不同的作用。为NS的时候上层要知道下层的两个东西,一个是key:子域的域名,value:子域的子域的服务器域名;第二个是key:子域服务器的域名,value:服务器的ip
- DNS攻击,攻击根,流量不走根,查询并不一定要走根,而且localserver缓存了顶级域甚至二级域的域名和ip地址,所以把根掐掉并不一定就不能查询了。
- cs模式时,如果客户端数量少,则客户端的下行就成为限制,但是当数量很多时,服务器的上行就成为限制了。p2p模式时,最小下载带宽的客户端为限制。除了服务器提供上载外还有其他的客户端。
- 非结构化p2p:两个节点有关系有会话,相当于邻居关系,然后他们覆盖,但是节点和节点之间的这种关系是随意的随机的称为非结构化的p2p;(DHT)结构化p2p:节点和节点之间是有序的,根据节点的不同,例如构成一个环,一个树,或者更复杂的关系。
- 非结构化p2p,集中目录、完全分布式、混合体(组长和组员,组长之间是分布式的,组长和组员之间是集中式的)。
- BitTorrent(位洪流):tit-for-tat,把这个文件分成很多快,每个人有这些块的那些部分的就为1没有的就为0,然后每次和4个建立连接(防止建立太多,速度又慢了),请求没有的,在这里面,你提供的资源越稀缺,下次该你需要下载的时候,为你提供的就好(鼓励贡献)。
- 结构化p2p,每个节点按照ip地址的hash值作为标识,例如构成一个环,离线了就重新连环。文件内容也是弄成hash值,文件hash值为6-88的就维护在88这种。查询的时候,就直接根据它的hash值查询。
- cdn运营商部署缓存节点的位置:enter deep(部署在更接近用户的地方,数量多,管理困难);bring home(部署在关键位置,数量少)。
- cdn的使用让网络加速,事先将内容上传到cdn开始节点,不是都从源获取,而是通过计算判断让离用户最近的cdn缓存节点提供服务。
- tcpSocket(可靠的)
- udpSocket(不可靠)
- 传输层和网络层相比
- tcp是字节流,udp是数据报
- Tcp复用
- udp复用
- 可靠数据传输rdt。不断的升级。但是是一发一停一接收,利用率很低。
- rtt往返延时。
- 流水线协议(一次性可解决多个),非流水线协议(一次只能一个)。
- 提高所述38的利用率:(slide window)滑动窗口协议,发送缓冲区(可用来存放已发送,但是还没得到对方确认的),发送窗口是发送缓冲区的一部分或全部(已发送,但是还没得到对方确认的),发送窗口不能超过发送缓冲区。在以上基础上。GBN是接收等于1和发送大于1,SR是都大于1。正常时,前者发送一个接收到一个之后再发。后者可同时发送几个,返回也是根据发送的返回;异常时,前者是全部重发,后者是对应的重发。S-W是等等与1
- GBN协议和SR协议总结。
- 运行中的gbn
- 运行中的sr
- sr和gbn对比
- 以太网MTU最大传输单元(Maximum Transmission Unit,MTU),最大为1500字节,应用层一次最多传1460个字节,多了需分段。
- mss 字节流中最大报文段的长度。
- TCP报文段结构。
- TCP的应答为发送方序列号+1,例如应答100代表99及之前的都收到了,且为累积确认。
- 为什么TCP要三次握手要知道要连接了、准备好缓冲区、要对某些值置位。只二次握手的话,可能确认连接的段丢失或暂留,导致服务器半连接。
- 两次握手是不行的。
- 所以需三次握手(第一次客户端带一个序号过去,服务端返回这个序号+1且也给一个另外单独序号,客户端返回服务端的序号+1,都正常之后才建立连接。这就是三次握手)
- 四次挥手。
- 网络拥塞。拥塞控制的两个方法
- 网络辅助信息的拥塞控制:
ABR:提供的弹性服务,在网络不发生拥堵时可以瞬时的超过带宽,在阻塞时两主机之间一定不能超过限定的带宽;
RM(资源管理信元):有两个标志位:NI(轻微拥塞),CI(严重拥塞),还有个字段ER标识能够为这对主机提供多大的带宽。 - 端到端的拥塞控制:有拥塞:超时或者三个冗余的ack(当前的没收到,但是当前的后面三个收到了)。
- tcp控制拥塞单独方法
- 流量和拥塞控制联合动作。一个是能发送的最大长度,一个是能接收的最大长度。分别对应着拥塞控制的值和流量控制的值。取他们最小的。
Threshold为阈值,ConWin为窗口值,SS为慢启动。 - 网络层。数据平面和控制平面。
传统方式:控制平面算路由表,数据平面按照路由表进行转发,不易于更改。
SDN方式:控制平面式集中式的,易更改。 - 网络层对什么都不管,所以叫尽力而为的模型。网络层单独服务模型。
- 交换结构
- 用排队,中间(fabric)速度要大于n倍的输入,例如输入为10bps,有10个中间处理速度要大于100bps。要排队是因为链路层的瞬时速度可能比fabric的速度快。
- fabric的输出排队可以是先进先出,但丢弃时有调度。输出也有其他的调度。
- 太大了需分片(记忆有偏移量),分片之后,到主机之后再重组,有一片没到就触发定时器重发。
- 子网:前缀一样、一个子网里面在ip上就一跳(可以借助交换机,但不借助路由器);
- 地址分类,其中全为0和全为1的不要。
- a、b、c都是单播。
- 路由是由一个网络为单位来做路由信息的发布和计算,而不是单个单个的ip,而且在传输的过程中这些网络还可以做聚集。
- 特殊的ip地址。
- 内网(专用)IP地址
- 子网掩码:按需分配网络比特,然后算的时候与上1111…000,因为主机号在路由转发的时候没用所以与的0。1的个数就是/后面的数字,总共32位,其余的补0。
- 如何获取地址
- 左边的就是路由聚集,当isp发送200.23.18.7的时候,由于那个红色的是它的下一跳(前20位是满足的)所以先传给他,然后再往左边传,看前23位,就能得出谁是200.23.18的下一跳,就交给谁解析。
- 内网和外网的交互,内网能主动与外网连接,外网不行,需要网络穿透。
- net穿透:1静态写死;2映射Universal Plug and Play(UPnP);3中继。
- ipv6,源主机分片,不在路由分片(ipv4在路由分片)。
- ipv4升级ipv6平滑升级。最开始ipv6内部用ipv6外部用ipv4进行数据传输,两个ipv6之间的传输也依靠ipv4,当数据到ipv6这里时,就解封装在封装成ipv6,就实现两个ipv6的通信了。
- sdn的主要思路。
- sdn可以更细化的区分,传统的只能走一条。
sdn将垂直集成变为了水平集成(更加开放)。
集中式实现控制逻辑(易于管理)。
SDN的openflow流表:改变里面的字段就可以表示不同的功能,应用更广。