计算机网络的一丢丢知识点

1. 计算机网络体系结构

计算机网络的体系结构有以上3种。

1. OSI的七层协议体系结构,概念清楚,理论完整,但复杂不实用;

2. TCP/IP体系结构,应用广泛。

3. 5层协议,综合OSI和TCP/IP的优点,相对简洁,用于原理学习。

各层的主要功能:

  • 应用层(Application Layer):通过应用进程间的交互来完成特定网络应用,应用层协议定义的是应用进程间通信和交互的规则。应用层协议有:域名系统DNS、HTTP协议、邮件SMTP协议。应用层交互的数据成为报文(message)。
  • 运输层(传输层,transport layer):负责向两台主机中进程之间的通信提供通用的数据传输服务。“通用”指多种应用可以使用同一个运输层服务。运输层主要使用的协议:1)TCP(Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段(segment);2)UDP(User Datagram Protocol)——提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),数据传输的单位是用户数据。
  • 网络层(network layer):负责为分组交换网上的不同主机提供通信服务。网络层使用的是无连接的网际协议IP(Internet Protocol)以及多种路由选择协议。数据传输的单位叫做IP数据报,简称数据报。
  • 数据链路层(data link layer):简称链路层,有专门的链路层协议。将数据报组装成帧(framing),然后再两个相邻节点间的链路上传送帧。
  • 物理层(physical layer):所传数据的单位是比特

模型分层带来的好处

  1. 各层之间独立;
  2. 灵活性好;
  3. 结构上可分割;
  4. 易于实现和维护;
  5. 促进标准化工作;

数据在各层之间传送过程:

TCP和IP两个协议是计算机网络中最著名的协议了,但TCP/IP更多的是代表整个TCP/IP协议族。

2. 物理层

物理层重要概念:

  • 物理层考虑的是考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是只具体的传输媒体。物理层协议常称为物理层规程(procedure)
  • 一个数据通信系统可划分为原系统、传输系统、目的系统三个部分。
  • 通信的目的是传送消息。数据是运送消息的实体。信号则是数据的电气或电磁的表现。
  • 根据信号中代表消息的参数的取值方式不同,信号可以分为模拟信号(或连续信号)和数字信号(或离散信号)。代表数字信号不同离散数值的基本波形成为码元。
  • 根据双方信息交互的方式,通信可以划分为单向通信(或单工通信)、双向交替通信(或半双工通信)和双向同时通信(全双工通信)。
  • 来自信源的信号交做基带信号。
  • 传输媒体可以分为导引型传输媒体(双绞线、同轴电缆或光纤)和非导引型传输媒体(无线、红外或大气激光)。
  • 常用的心道复用技术有频分复用、时分复用、统计时分复用、码分复用和波分复用(光的频分复用)。

3. 数据链路层

数据链路层重要概念:

  • 链路是从一个节点到相邻节点的一段物理线路,数据链路则是在链路的基础上增加一些必要的硬件(如网络适配器)和软件(如协议的实现)。
  • 数据链路层使用的信道主要由点对点信道和广播信道两种。
  • 数据链路层传送的协议数据单元是帧。数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
  • 循环冗余检验CRC是一种检错方法,而帧检验序列FCS是添加在数据后面的冗余码。
  • 点对点协议PPP是数据链路层使用最多的一种协议,特点是:简单;只检测差错,而不是纠正差错;不适用序号,也不进行流量控制;可同时支持多种网路层协议。

4. 网络层

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务(这种交付实质上就是不可靠交付)。网络层不提供服务质量的承诺。

网际协议IP

与IP新协议配套使用的还有三个协议:

  • 地址解析协议ARP(Address Resolution Protocol)
  1. 根据主机(或路由器)的IP地址找出相应的硬件地址;
  2. 每台主机都有ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表;
  3. ARP高速缓存每过一段时间就会清空。
  • 网际控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管理协议IGMP(Internet Group Management Protocol)

上图为网际协议IP及其配套协议的关系。

物理地址是数据链路层和物理层使用到的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。其中的区别如下图

IP数据报的格式

IP层转发分组的流程

最主要的就是路由表,根据目的网络地址来确定吓一跳路由器,IP数据报最终可以找到目的主机所在目的网络上的路由器;只有到达最后一个路由器是,才视图向目的主机进行直接交互。

子网划分

即将两级IP地址划分为三级IP地址:IP地址={<网络号>, <主机号>} = {<网络号>, <子网号>, <主机号>}

网络层重要概念:

  • IPV4 32位长,IPV6 128位长。

5. 运输层

运输层向它上面的应用层提供通信服务

运输层和网络层的主要区别

在运输层使用协议端口号(Protocol port number),在协议栈层间的抽象的协议端口就是软件端口。两个计算机中的进程要相互通信,不仅必须知道对方的IP地址(找到对方的计算机),而且还要知道对方的端口(为了找到对方计算机中的应用程序)。

常用的端口如上表。

用户数据报协议UDP(User Datagram Protocol)

特点:

  1. 无连接,发送前不建立连接,因此发送后也没有连接释放;
  2. 尽最大努力交付,保证不了交付的可靠性;
  3. 面向报文的,运输层发送方的UDP直接对应用层应用程序发送的报文添加首部后直接交付给IP层,接收方的UDP也是在去掉首部后直接交给应用层的应用程序;
  4. 没有拥塞机制;
  5. 支持一对一,一对多,多对一和多对多的交互通信;
  6. 首部开销小,只有8个字节,比TCP20个字节的首部要短。

UDP面向报文如下图:

传输控制协议TCP(Transmission Control Protocol)

TCIP是面向接连的服务。在传送数据之前必须先建立连接(三次握手),数据传送结束后要释放连接(四次挥手)。TCP不提供广播和多播服务。

主要特点:

  1. 面向连接的运输协议,在传输数据之前需要先建立连接,在传输数据完成之后,要释放TCP建立的连接;
  2. 每一条TCP连接只能有两个端点,因此TCP的连接是点对点;
  3. 提供可靠交付的服务,建立连接之后传输数据,无差错、不丢失、不重复、并且按序到达;
  4. 提供全双工通信,TCP允许通信双方的应用程序在任何时候都能发送数据,TCP连接的两端都设有发送缓存和接受缓存;
  5. 面向字节流,TCP中的流(stream)是指流入到进程或从进程流出的字节序列,面向字节流的含义:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序叫下来的数据仅仅看成史诗一连串的无结构的字节流;

面向字节流概念图如下:

TCP的连接:

TCP的连接有两个端点,这个端点叫做套接字(socket)或插口,端口号拼接到IP帝制即构成套接字,因此套接字的表示方法在点分十进制IP帝制后面写上端口号,中间用冒号或都好隔开,如IP地址是192.3.4.5,端口号是80,那么套接字就是:192.3.4.5:80,套接字(socket)=(IP地址:端口号),因此每一条TCP连接唯一的被通信两端的两个端点(两个套接字)所确定,TCP连接={socket1,socket2}={(IP1:port1),(IP2,port2)}。

socket还有不同含义:

  1. 允许应用程序访问连网协议的应用编程接口API(Application Programming Interface),即运输层和应用层之间的一种连接口,成为socketAPI,简称socket;
  2. 在socketAPI中使用的一个函数的函数名称也叫socket;
  3. 调用socket函数的端点成为socket,如“创建一个数据报socket”;
  4. 调用socket函数时,其返回值称为socket描述符,可简称为socket;
  5. 在操作系统内核中连网协议的Berkeley实现,成为socket实现。

TCP可靠传输工作原理:

  1. 停止等待协议
  2. 连续ARQ协议

TCP可靠传输的实现:

  1. 以字节为单位的滑动窗口
  2. 超时重传时间的选择,该时间选择是TCP最复杂的问题之一;
  3. 选择确认SACK(selective ACK)

TCP的流量控制;

流量控制(flow control)就是让发送方的发送速率不要太快,让接收方来得及接收。

  1. 利用滑动从窗口实现流量控制;
  2. TCP的传输效率

TCP的拥塞机制:

拥塞控制的一般原理,拥塞(congestion)指链路容量中的需求资源超过了可用部分,性能就变坏。

TCP的拥塞控制方法

  1. 慢开始(slow-start),由小到大增大发送窗口,即由小到大逐渐增大拥塞窗口的数量;
  2. 拥塞避免(congestion avoidance),让拥塞狂口缓慢增大,即加法增大;
  3. 快重传(fast retransmit),首先要求接收方不要等待自己发送数据是才进行捎带确认,而是立即发送确认,既是收到丢失的报文段也要立即发出对已收到的报文段的重复确认。
  4. 快恢复(fast recovery),快速恢复拥塞窗口。

TCP的运输连接管理:

  • 连接建立,要解决的是三个问题
  1. 要使每一方都能够确认对方的存在;
  2. 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等等);
  3. 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

三次握手过程

关于A为什么最后还要发送一次确认?主要是为了防止已失效的连接请求报文段突然又传送到B,而产生错误。所谓“已失效的连接请求报文段”是A第一次连接请求并没有丢失(传输时间有点长),然后A发送第二次连接请求并受到确认也建立了连接,且延误到AB已经传输完数据已经释放了连接后第一次的请求到了B,那么B误认为A又一次建立连接请求,这种情况就是A还未发送请求连接结果B已经确认了,那么A因为没有发送连接请求而直接不理睬,而B却以为建立了连接还会一直等待A发送数据。因此会有A的确认信息让B知道A已经收到确认连接信息,那么值钱的情况就不会发生,因为A收不到A的确认连接信息,就不会建立连接。

  • 数据传送
  • 连接释放

MSL叫做最长报文寿命短(Maximum Segment Lifetime) ,标准中建议为2分钟。第一为了保证A发送的最后一个A出口报文段到达B,即最后一个ACK确认B没有收到一直处于LAST-ACK的状态的话,B会重发FIN+ACK确认信,而A就是在2MSL时间内再次受到FIN+ACK消息的时候再次重传最后一个ACK消息,然后又启动2MSL计时器。第二是防止之前调到的“已失效的连接请求报问段”船现在本连接中,2MSL够所有本连接持续时间内所有的报文段从我网上消失。

四次挥手过程如上图。

6. 应用层

该层的具体内容就是精确定义不同主机中的多个应用进程之间的通信规则。

  • 域名系统DNS(Domain Name System)
  1. 三级域名构成:mail.cctv.com中,mail为三级域名,cctv为二级域名,com为顶级域名
  2. 国家级顶级域名:cn中国,us美国,uk英国,好包括一些地区的域名,hk香港、tw台湾

域名空间如上图

参考于《计算机网络》

原文地址:https://www.cnblogs.com/baishouzu/p/12369311.html

时间: 2024-11-09 02:37:49

计算机网络的一丢丢知识点的相关文章

关于第二类斯特林数的一丢丢东西

关于第二类斯特林数的一丢丢东西 第二类斯特林数 S(n,m)表示有\(n\)个有区别小球,要放进\(m\)个相同盒子里,且每个盒子非空的方案数 考虑一个很容易的递推: \[S(n,m)=S(n-1,m-1)+m*S(n-1,m)\] 考虑组合意义: 假设前面的\(n-1\)个球丢进了\(m-1\)个组,因为每个组非空,所以这个球只有一种选择--自己一组 如果前面的球已经分成了\(m\)组,那么,这个球就有\(m\)种放法 所以这个递推式就是这样来的 那么,只考虑组合意义可不可以算? 当然是可以的

每天都有那么一丢丢成就感,生活就多了很多幸福感

扇贝单词 我从2016年6月开始使用扇贝单词背单词,但那时只是想起来就背,应该从来就没有满勤打卡的时候.真正把背单词这件事坚持下来,应该是从2017年6月开始,逐渐打卡记录多了起来,第一个满勤打卡发生在2017年8月.我每天要求自己背50个单词,大概10分钟左右的时间.我将背单词的时间固定在每天早上上厕所的时候同时进行,别人上厕所刷朋友圈,看电视剧,我就背单词.如果上厕所的时间背不完,我就上班坐轻轨的路上把剩下的单词背完.从上轻轨到下车,15分钟左右,一定可以背完本天的任务.一开始自己督促自己背

面向对象中一丢丢小知识点

1.使用 Function 创建函数与原来的方式创建函数: Function 是使用字符串构建函数, 那么就可以在程序运行过程中构建函数 将数组形式的字符串, 转换成数组对象 var arr = ( new Function( 'return ' + str + ';' ) )(); 2.eval();不常用,易受恶意攻击.用()将其转换成表达式,{}不再是语句块,转换成代码块而是对象了 3.变量名提升:预解析(标记声明).代码执行.调用 4.函数声明与函数表达式有区别:函数声明是单独写在一个结

关于线性基的一丢丢理解

线性基 有趣的东西 在某次考试时人人都切了一道题时才发现我没学过线性基... 是什么 我感觉它就是一个类似于向量基底的东西 线性基中的元素任选几个异或起来是可以表达出原数组中的所有的值的,并且不能搞出其它的数 性质 线性基无论怎么选集合,只要是非空的,异或起来一定不是\(0\) 线性基二进制最高位互不相同 线性基中元素互相异或,异或集合不变 线性基异或出原数组的异或方案唯一 满的线性基可以表示出所有正整数,准确来说是\(2\)的长度次方减\(1\) 求法 首先线性基中的一个元素\(a[i]\)的

Day 22 生成器yield表达式及内置函数(一丢丢)

本日知识点: ################################### #一.上节课复习:在for循环式,调用对象内部的__iter__方法, # 把他们变成了可迭代对象然后for循环调用可迭代对象的__next__方法去取值, # 而且for循环会捕捉StopIteration异常,以终止迭代 ################################### # def func(n): # while n > 0: # yield n # print("*"

影院售票系统-----一个让你有成就感的小项目,只有一丢丢哦

先来点废话,刚拿到这个项目的时候你是怎么想的,上来就闷头写,还是构想思路......   项目需求:     影院售票系统可以销售每天不同时段的电影票,不同时段的电影票有不同的优惠政策,还有使用兑换券的免费票.选择某个时段的一场电影,     单击放映厅未售出的座位并选择一个种类的电影票,创建电影票,计算价格并打印,座位设置为红色表示已经售出.   思想:    使用面向对象思想编写影院售票系统   看完这个你有没有点思路呢,我想你是有的 ...... 下面先来点图片,先刺激一下视觉:  窗体搭

每天积累一丢丢(Fri, 6 May 2016)

再谈闭包,闭包为什么可以保存变量以及参数的原理. 首先复习一下execution context这个object创建的时候都做了啥: executionContextObj = { variableObject: { /* 函数中的arguments对象, 参数, 内部的变量以及函数声明 */ }, scopeChain: { /* variableObject 以及所有父执行上下文中的variableObject */ }, this: {} } 而variableObject中包括活动对象a

Hive(2)-Hive的安装,使用Mysql替换derby,以及一丢丢基本的HQL

一. Hive下载 1. Hive官网地址 http://hive.apache.org/ 2. 文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 3. 下载地址 http://archive.apache.org/dist/hive/ 4. github地址 https://github.com/apache/hive 5. 也可以使用我准备好的安装包 https://pan.baidu.com/s/1

关于java线程池的一丢丢

线程池应用达到的目的 1.降低资源消耗:可以重复利用已创建的线程从而降低线程创建和销毁所带来的消耗. 2.提高响应速度:当任务到达时,不需要等线程创建就可以立即执行. 3.提高线程的可管理性:使用线程池统一分配.调优和监控. 线程池实现原理          1. 最核心的ThreadPoolExecutor类,ThreadPoolExecutor.AbstractExecutorService.ExecutorService和Executor几个之间的关系 public class Threa