来了来了来了,想必小伙伴们都已经开始预习了,之前写的计网笔记只不过是ppt的一个提炼,今天打算写一点点干货。写文章不容易,小伙伴们看了记得点个赞,有任何问题可以私我或者留言,愿复习顺利,全都满绩!

和老师上课的层次化结构不同,我希望能把各层的内容融会贯通,构建一个计算机网络的整体认识。


因特网提供的服务

应用层
因特网应用的核心是让两个不同终端的进程完成通信

应用层是所有层次当中,和人交互最接近的层次,也是所有的层次当中最具有可读性的一层,会为用户的不同需求利用不同的底层协议完成不同的任务。应用层和网络核心无关,连接等定义都在概念层面上,也会有很多的变体。

运输层
对应用层的概念细化,为不同的进程提供逻辑通信(数据如何传,是否可靠)

  • 可靠的、按序的交付 (TCP)

    • 拥塞控制
    • 流量控制
    • 连接建立
  • 不可靠、不按序交付(UDP)
    • 尽力而为的IP不提供不必要的服务 (主要给DNS提供服务)

网络层
运输层只是在端系统上,我们并不知道包到底是为什么丢的,而网络层不再只考虑端系统的处理,考虑端系统和网络核心(路由器)的通信服务

只提供尽力而为的交付

链路层
运输层只是在路由器上,从路由器到路由器可能要经过各种链路层交换机,简而言之,链路层引入了交换机到网络的考虑范围中

  • 成帧
  • 链路接入(Medium Access Control)
    点对点传输
  • 差错检查(纠正在卫星链路也会提供,这里我们不加考虑)

物理层就是dsp的事情了,我们在另外一篇文章当中有一些介绍

不同层次对数据的看法

应用层
不需要检查,有序并且没有差错的数据

运输层
无结构,乱序的字节流,需要进行排序

网络层
携带IP地址的数据报

链路层
有很大出错可能的数据流(网卡从数据流中捞出数据,不是自己的MAC地址就扔走)


隔着网络说点啥

前面我们简单的通过自顶向下的方法简单说一下不同层次服务的差别,下面我们根据一段数据来开启我们的探索过程。

我是一段数据,我的主人给我的目标是去表白,在俺打包好之后,网络上的各个层都来检查我对不对

链路层

在链路层中,我被叫做链路层帧,链路层会考虑更多的在物理实现上的问题,比如以太网的帧不能超过1500比特

链路层在打包的时候只问一件事情,你的差错检测做好了吗

  • 奇偶校验

    • 单个奇偶校验位:只能检测到奇数个错误
    • 二维奇偶校验: 能够纠正单个比特差错
  • 检查和方法(运输层常使用) 利用原码+反码=0
    把所有16个字节的内容求和(如果溢出了就加回来,反正就是反码加法原理)
    得到的和逐位取反
    检查的时候把检查和和所有内容相加
    虽然开销小,但是差错检查的能力弱
  • 循环冗余检验CRC 如果没法整除,那就把余数补在最后几位
    按照多项式补零 根据最后的余数把0补充进来
    能检查小于r+1的任何突发差错 奇数个差错(r为多项式的位数)

网络层

在网络层我被叫做数据报 (每个数据报承载1个运输层段)(每个数据报承载多个链路层帧

网络层为了进行路由和转发,给我增加了IP信息等辅助信息(这里我们只讨论IPv4报文)

  • 源和目的IP地址
  • version IP的版本号
  • 首部长度 (有可能是变长的,需要知道数据的起点)
  • 长度 数据报的总长度
  • 寿命 从网络层开始 我们的考虑内容就不止在端系统上,在网络当中寻路就会存在丢失的,如果迷路的话就应该自行销毁
  • 首部检查和 (好几层都用就来一个8)
  • 标识 标识是否是最后一个 这里标识了在运输层就不标识了
  • 段偏移 要知道在链路层只能承受比较短的数据传送量 所以一个大的数据报会被切分成很多个小的数据报 在运输层(也就是端系统进行组合)

运输层

运输层主要有两个检查 TCP 和 UDP

UDP师傅追求效率,只提供尽力而为的服务,在我的首部只增加了 8个字节

  • 源端口
  • 目的端口
  • 长度(字节计算):包括头部
  • 检查和 进行一个高效简单的检查

TCP师傅为了保证可靠传输,增加了更多的头部信息

  • 序号 报文段首个字节的字节流编号
  • 确定号 有序的最后一个编号 比如收到 0-500 510-520 确定号为501 也就是需要的下一个编号
  • 标注字段 ACK SYN FIN: 主要用在三次握手和四次挥手当中
  • 接收窗口字段 返回接收终端的剩余缓存大小 用于流量控制

应用层

终于到应用层了,来检查我的人是套接字,他是一个软件接口,向网络发送报文和从网络当中接收报文, 看我是一个HTTP响应报文

  • 状态行 http1.1 (200 301 400 404) 对应的状态信息
  • 首部行(可长可短,判断是否存在不同的内容) 最多使用的就是last-modified
  • 实体(这里包含多个报文段) 和运输层的报文段相关

发送准备

好的那么检查完毕了,我们要准备发送了(采用TCP方案)

找到自己的IP地址(网络层)

  • 主机广播 DHCP discover
  • 服务器响应(广播)(根据编号进行响应) DHCP offer
  • 主机请求IP地址 DHCP request
  • 服务器发送地址(广播) DHCP ack

找到我们的发送对象

我现在知道:
域名:www.xxx.com
但这是明显不能帮我们找到另一条主机

所以我们采用DNS服务域名转化到IP地址(UDP协议作为基础)

DNS的主要优点在于 域名和IP地址的转化 均衡负载

在轮循查询的过程当中 主机需要分别查找

  • 本地服务器(依靠之前访问的缓存) 作为代理转发请求
  • 权威服务器 : 由组织维护的服务器 比如http://www.baidu.com的域名解析
  • 顶级域名服务器 com org 这些前缀的所有内容都保护
  • 根服务器 保存顶级服务器的IP地址

IP地址只能在逻辑上帮助我们寻找,但我们还是找不到主机

我们需要借助ARP协议将IP地址(32比特)映射到MAC地址(48比特)

和IP地址不同,MAC地址作为物理地址(固化在网卡的RAN芯片当中),在全球是一个平面化的结构相对来说更难查找和DNS相比,ARP只查找一个子网域内的MAC地址映射,DNS提供全世界的查询功能

ARP协议实现:
我们知道IP地址,如何进行寻找呢?

  • 假设在同一个子网当中:
    发送广播帧,在对应IP地址收到后,返回一个相对应MAC地址。两边的ARP表都增加一个IP到MAC地址的映射
  • 不在同一个子网内
    发现不在一个子网内,发送给路由器接口,根据路由器另一侧的IP MAC地址(根据最长真前缀匹配) 继续寻找

建立连接

在得知双方的IP地址 MAC地址 我们需要构建双方的连接通道

应用层:

非流水线:

  • 客户端初始化 TCP连接
  • 服务器接收连接
  • 客户端发送请求
  • 服务器发送响应(包括需要的信息)
  • 客户端关闭TCP连接

流水线方式可以在一个TCP连接当中发送多个请求,提高了效率

运输层:(TCP的三次握手与四次挥手)

  • 三次握手

    • 客户机发送SYN(指定初始序号) SYN=1 seq=x
    • 服务器SYNACK回应(分配缓冲区) synbit=1 seq=y ackbit =1 acknum = x + 1
    • ACK回应(可以包含数据) ackbit=1 acknum = y + 1 都知道对方的初始化序号
  • 四次挥手
    • 客户机发送FIN FINbit =1 seq = x
    • 服务器用ACK回答,关闭连接 ackbit =1 acknum=x+1
    • 客户机用ACK回答(超时等待,把剩余数据接收下来) finbit=1 seq = y
    • p2p两分的选择题 连接关闭

在建立连接后,我们就可以发送数据了,在发送数据的时候,如何正确的发送数据和快速发送数据成为了关注的焦点

如何正确的发送数据

链路层

在链路层中,数据看起来像河流,我只取一瓢饮,链路层失败的原因就是大家一起传输导致的错误

给出的解决方案如下

多路访问协议类型

  • 信道划分协议

    • 把信道划分为小片
    • 给节点分配专用的小片
  • 随机访问协议
    • 不划分信道,允许冲突
    • 能从冲突中恢复(发现一起说话就都停止)
  • 轮流协议
    • 通过轮流访问信道避免冲突,要发送节点越多,轮流时间越长

信道划分协议

  • 时分多路接入

    • 把时间划分位时间帧,分配给N个节点
    • 每个节点只在固定分配的时隙当中进行传输
      优缺点
    • 可以避免冲突
    • 效率不高
  • 频分多路接入
    • 避免冲突、公平
    • 节点带宽有效,效率不高
  • 码分多路接入

随机接入协议

全部按照最大速率发送,发生冲突,每个节点随机等待一个时间再重发

  • 时隙ALOHA

    • 所有的帧长L比特
    • 时间被划分为若干个等长的时隙
    • 节点只在时隙的开始点传输帧

无冲突:节点成功传输帧
有冲突:节点检测到冲突,以概率p在后续每个时隙重传该帧,到成功

  • 纯ALOHA

    • 每个节点的传输与广播信道上其他节点的活动是相互独立的
    • 一个节点开始传输并不知道是否有其他节点正在传输
    • 发生冲突时不会停止传输,导致效率不高

载波侦听多路访问 CMSA

  • 信道忙:有其他节点正往信道发送帧,该节点随机等待一段时间,再侦听信道
  • 信道空:该节点开始传输整个数据帧

特点

  • 发前监听,减少冲突
  • 传播时延存在,仍可能出现冲突,并造成信道浪费
  • 但是由于物理链路发送顺序不同,破坏了却没有检测到导致浪费

轮流协议

  • 轮询协议
    主机节点的单点瓶颈问题
  • 令牌传递协议
    控制令牌顺序从一个节点传递到下一个节点

    • 令牌开销
    • 延时
    • 单点失效

运输层

总之,链路层提供的还是一个尽力而为的服务方式,真正保证可靠传输的,还得看TCP

在TCP前,有两种可靠的流水线传输方式,TCP算是一个集大成者

  • 回退N帧法

    • 发送方
      维护一个计时器,超过时间就重传,收到ACK前移窗口,每次超时重传直接传一组
    • 接受方
      发送有序的最高序号的ack,丢弃失序分组
  • 选择性重传
    • 发送方
      维护多个计时器,如果最小的编号收到ACK再前移窗口,哪个包超时哪个重传
    • 接受方
      收到就缓存,按序的话前移
      notice 窗口长度小于等于序号长度的一半
  • TCP
    • 发送方
      维护一个计时器,超过时间就重传,收到ACK前移窗口,每次超时重传(或者收到三个相同的ack)直接传一组
    • 接受方
      发送有序的最高序号的ack,缓存失序分组

如何协调速率

流量控制:发送速率不能超过接收方缓冲区的大小

拥塞控制:不止是在接受方感受拥塞,整个网络也不能太拥挤

好事情:收到ACK

  • slow start 速度翻倍直到ssthresh
  • fast recovery 回到拥塞避免模式 cwnd = ssthresh
  • congest avoidance 每轮增加一个cwnd

坏事情:超时

三种状态: ssthresh = cwnd / 2 cwnd =1

坏事情:收到三个dupACKcount

ssthresh = cwnd/2 cwnd = ssthresh + 3

在快速回复状态 cwnd += 1

RTT的估量

在算超时的时候,RTT的时间估量很重要,短的话ack没时间回来,长的话浪费效率

estimatedRTT = (1- α)*estimatedRTT + α * SampleRTT

α=0.125 sampleRTT是采样的来回时间 estimate 最后估计的时间(指数加权平均)

DevRTT = (1-β) * DevRTT + β * |sampleRTT - EstimateRTT|

β=0.25 DevRTT衡量estimatedRTT的波动大小

TImeoutInterval = EstimatedRTT + 4 * DevRTT

如何找到路径

层次化协议

intra-AS (IGP)interior gateway protocols

  • 位于相同AS主机和路由器之间的路由
  • AS内部有路由器必须运行相同的域内路由协议
  • RIP(routing information protocol) 距离向量 30s通知一次
  • OSPF(open shortest path first)
    • 使用dijkstra算法计算路由
    • 路由器泛洪链路信息的公告给所有位于同一个AS的路由器(封装在IP报当中)

inter-AS

  • AS之间的路由
  • 网关执行域间路由协议
  • BGP协议
    • 基于本地偏好属性选择
    • 最短的AS-PATH选择
    • 最近的Next-hop路由器: hot potato routing 在每一个路由域内都选择最短的路径,赶快把土豆送出去

最后还有数据平面和一些cookie的内容不想先写了,大家多指教8

计算机网络组成

  • 终端(客户机 服务器)
  • 通信链路 光纤双绞线 无线电 同轴电缆 电话线 设备
  • 设备(路由器 二层交换机)

网络应用:分布式应用程序 客户端主机和服务器端主机 分布在不同的物理位置上 不运行在网络核心的分组交换机中

网络协议:主机进行通信理解的基础 报文格式和交流的次序 协议三要素 语法 语义 失序

语法:数据格式 头部字段的含义
语义:何种控制信息做出何种响应
失序 :事件实现顺序

接入形式

家庭接入:数字用户线技术接入

企业以太网 无线以太网技术

网络构建

分组交换网:package 存储转发机制 进行差错检查 根据目的IP地址进行转发

排队时延

掌握:频分复用技术 时分复用技术

电路交换网络: 同话之前建立畅通的物理链路 需要占用释放资源

电路交换和分组交换网络的区别:

报文交换(存储转发,不预留资源,整个报文不分割为分组,电路交换浪费资源)

ARP的过程

modified since条件get不一定会考

p2p两分的选择题 虚电路的基本不考

DHCP :DNS IP 默认网关

128位 IPV6网络

VLAN可以按照端口 mac 网络层地址划分

一个ji奥还击可以划分位两个vlan

两个VLAN之间需要路由器

VLAN可以跨多个不同的交换机

802.1q 要加入来自哪个对应的vlan 对应的属于VLAN1的部分 (进行物理隔离)

计算机网络ppt_计算机网络--女娲补天相关推荐

  1. 【计算机网络】计算机网络概述 : 总结 ( 概念 | 组成 | 功能 | 分类 | 性能指标 | OSI 七层参考模型 | TCP/IP 模型 | 五层参考模型 )★★★

    文章目录 一.计算机网络概念 ★ 二.计算机网络组成 ★ 三.计算机网络功能 ★ 四.计算机网络分类 ★ 五.性能指标 ★★ 六.分层架构 ★★ 一.计算机网络概念 ★ 计算机网络 是 互连的 , 自 ...

  2. 【计算机网络】计算机网络 相关概念 ( 计算机网络概念 | 计算机网络功能 | 组成 | 工作方式 | 功能组成 | 分类 )

    文章目录 一.计算机网络 概念 二.计算机网络 功能 三.计算机网络 组成 四.计算机网络 工作方式 五.计算机网络 功能组成 六.计算机网络 分类 一.计算机网络 概念 "计算机网络&qu ...

  3. 【计算机网络】计算机网络概述

    文章目录 计算机网络 组成 分类 Internet 组成细节 服务角度 网络协议 协议是计算机网络有序运行的重要保证 任何通信或信息交换过程都需要规则 网络协议 协议三要素 协议是计算机网络的重要内容 ...

  4. 【王道考研计算机网络】—计算机网络的概念 组成 功能 分类

    [王道考研计算机网络]-计算机网络的概念 组成 功能 分类 本章思维导图如下 一.计算机网络的概念 计算机网络:是一个将分散的具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现 ...

  5. 计算机网络在金融领域的应用,计算机网络毕业论文计算机网络技术在金融领域的应用.pdf...

    <计算机网络毕业论文计算机网络技术在金融领域的应用.pdf>由会员分享,提供在线免费全文阅读可下载,此文档格式为pdf,更多相关<计算机网络毕业论文计算机网络技术在金融领域的应用.p ...

  6. 计算机网络演进,计算机网络演进之路

    1. 计算机网络在信息时代的作用 信息化时代的特征就是数字化.网络化和信息化,是一个以网络为核心的信息时代.网络指的是"三网",即电信网络.有限电视网络和计算机网络.其中发展最快并 ...

  7. 【计算机网络】计算机网络总结

    第一章 概述 本章重要内容: (1)互联网边缘部分和核心部分的作用 (2)计算机网络的性能指标 (3)计算机网络分层的体系结构 1.1计算机网络在信息时代的作用 21世纪的重要特征:数字化.网络化.信 ...

  8. ppt计算机网络技术,计算机网络技术.ppt

    计算机网络技术.ppt <计算机网络技术>,计算机网络概述,计算机网络的认知与应用体验,网络与网络应用无处不在,以至于我们已经将其视为我们社会生活的一个不可缺少的部分: 问题:什么是计算机 ...

  9. 【计算机网络】计算机网络体系结构总结——基本知识要点汇总

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 计算机网络体系结构总结- ...

最新文章

  1. 微软提出极低资源下语音合成与识别新方法,小语种不怕没数据!| ICML 2019
  2. 《需求分析与系统设计》阅读笔记三
  3. 在Tomcat 与weblogic 中的 日志(log4j) 配置系列二(weblogic 应用程序使用log4j)
  4. 用segnet训练我自己的数据,实验笔记1——改变图片大小
  5. 设计模式---桥接模式(C++实现)
  6. 推荐使用maven生成mybatis代码
  7. Qpython实现命令行的贪吃蛇
  8. 聊天机器人闲聊语料 - 1
  9. 一元线性回归的前因后果
  10. 【融职教育】Web全栈工程师浸入式课程体系
  11. Ubuntu20.04虚拟机安装、配置、美化教程
  12. 720s ideapad 黑苹果_Hackintosh 黑苹果长期维护机型 EFI 及安装教程整理
  13. 雷云3启动无响应解决办法
  14. Pycharm进入debug模式后一直显示collecting data解决方法
  15. js实现表格隔行变色效果
  16. 三国志2017攻略 服务器维护,三国志2017新手攻略少走弯路
  17. cns服务搭建+手机ml,百度直连
  18. excel表格打不开是什么原因_Excel表格批量隔行插入N行的方法是什么
  19. JAVA中两个char类型相加_5.16--java数据类型转换及杂记
  20. mysql查询余额变化,SQL查询解决方案-逐日余额

热门文章

  1. 魔鬼一样的二分查找模板
  2. linux移植win项目找不到pthread.h
  3. Pulseaudio之模式设置(二十一)
  4. Visual Assist X安装
  5. 动态ip、静态ip、pppoe拨号的区别
  6. linux学习笔记:我的第一个shell脚本
  7. mysql 字符串用省略号_CSS截取字符串自动补充省略号
  8. freemarker 解析对象的某元素_Freemarker常用技巧(三)
  9. 将文字或txt转换成GBK或者UTF8编码
  10. xilinx set up debug