注:写这篇文章主要是在学习前端时复习计算机网络写的,所以没有把整个计算机网络的知识点都包含,有侧重点,望见谅
知识点:
1、计算机网络概述
2、物理层
3、数据链路层
4、网络层 (重点)
5、运输层(重点)
6、应用层
7、网络安全
1、
1、 21世纪的一些重要特征就是数字化,信息化,网络化,是一个网络为核心的信息时代、
2、这里说的网络主要有三种:电信网络。有线电视和计算机网络3、Internet翻译名有两种:
因特网(全国技术委员会推荐的)
互联网(民间叫法,也是最为广泛的)
2、计算机网络的三个基本概念:
计算机网络(简称网络)由若干结点和链接这些的链路组成,网络结点可以是计算机,集线器,交换机或者路由器。
互联网就是把多个单独的计算机网络链接起来,因此又叫做网络的网络,与网络相连的计算机叫做主机、
同理,因特网就是把多个互联网链接起来的网络
3、互联网发展的三个阶段
第一阶段是ARPANET向互联网发展的过程
第二阶段是建成了三级结构的互联网:
三级结构是主干网,地区网,校园网或(企业网)
第三阶段是多层次ISP结构的互联网
1、互联网的拓扑结构非常复杂,从工作方式上主要分类两种:
边缘部分:所有链接在互联网上的主机组成,这部分是用户直接使用,用来进行通信和资源共享的
核心部分: 由大量网络和链接这些网络的路由器组成,主要功能是为边缘部分提供服务的
2、按照网络的作用范围进行分类(重点)
1、广域网WAN
2、城域网MAN
3、局域网LAN
4、个人区域网PAN
1、速率:
计算机传输信号都是以数字信号来传输的。所以说的速率就是数据的传输速率,也叫做数据率或者比特率
2、带宽
1、带宽是指某个信号具有的频带宽度,单位是赫
3、吞吐量
吞吐量是指在某个时间内通过某个网络(信道或者接口)的实际数据量
4、时延
时延是指数据从网络的一端传送到另外一端的时间
时延主要有:发送时延:主机或者路由器发送数据所需要的时间
传播时延:电磁波在信道中传播一定距离所需要花费的时间
处理时延:主机或者路由器收到分组后花费一定处理的时间
排队时延:在传输队列中排队的时间
1、ARPANET提出分层来处理问题,把大问题化解成局部问题来解决
2、1974年美国IBM公司提出系统网络体系结构SNA、
3、1977年国际标准化组织提出:开发系统互连基本参考模型OSI/RM
4、目前主流的是TCP/IP协议,虽然是非国际标准,但是已经默认承认了
5、网络协议:
为进行网络中的数据交换而建立的规则。标准或约定称为网络协议。
网络协议三要素:1、语法:数据与控制信息的结构和格式
2、语义:既需要发出何种控制信息,完成何种动作以及做出何种响应
3、同步:事件实现顺序的详细说明
6、计算机分层的好处:
1.各层之间是独立的
2、灵活性好
3、结构上可以分开
4、易于实现和维护
5、能促进标准化工作
7、具有五层协议的体系结构
TCP/IP是一个四层的体系结构:
后面每一个大节我会仔细的讲解各个层的应用和知识点,这里先大概了解一下
7.1应用层
应用层是体系结构中的最高层,任务是通过应用进程间的交互来完成特定网络应用
协议主要有域名DNS,HTTP协议,电子邮件的SMTP协议等
应用层交互的数据单元称为报文
7.2运输层
运输层任务是负责两台主机中进程之间的通信提供通用的数据传输服务
主要协议:传输控制协议TCP——提供面向链接的可靠的数据传输服务,数据传输单位是报文段
用户数据报文协议***UDP——提供无连接的。尽最大努力的数据传输服务,传输单位是用户数据报
7.3网络层
网络层负责分组交换机网上的不同足迹提供的通信服务,在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送,在TCP/IP协议中,由于使用了IP协议,因此分组数据也叫做IP数据
网络层也叫做IP层、
7.4数据链路层
数据链路层简称链路层,
两台主机传送数据的时候,是在一段一段的链路上传送的,需要使用专门的链路层协议,
7.5物理层
物理层上传输的数据时单位是比特,发送0或者1
前端学习重点需要掌握的是TCP/IP协议族
所以在接下来的内容中我重点写这两方面
1、物理层的主要任务就是确定与传输媒体的接口有关的一些特性,如机械特性,电气特性,功能特性
2一个数据通信系统可划分为三大部分:既源系统,传输系统,目的系统,源系统包括源点(源站,信源)和发送器,目的系统包括接收器和终点(或者目的站,信宿)
3、通信的目的是传送消息,如语音文字,图像,视频等都是消息。数据时运送消息的实体。信号则是数据的电气或者电磁的表现。
4、根据信号中代表的消息的参数的取值不同,信号可分为模拟信号(连续信号)或数字信号(离散信号),代表数字信号不同的离散数值的基本波形称为码元
5、根据双方信息交互的方式,通信可以划分为单向通信(单工通信)和双向交替通信(半双工通信)和双向同时通信(全双工通信)
来自信号源的信号叫做基带信号,信号要在信道上传输就需要经过调制,调制有基带调制和带通调制
6、要提高数据在信道上的传输速率,可是使用更好的传输媒体,或使用先进的调制技术,但是传输速率不是可以随便改变的
7、传输媒体主要分为两大类:
引导性传输媒体(双绞线,同轴电缆或者光纤)
非引导型传输媒体(无线或红外,大气激光)
1、链路是从一个结点到相邻节点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件,如网络适配器和软件,如协议的实现。
2、数据链路层使用的信道主要有点对点信道和广播信道两种。
3、数据链路层传输的协议数据单元是帧数据链路层的三个基本问题是封装成帧透明传输和差错检测。
4、点对点协议是数据链路存使用最多的一个协议,他的特点是简单,只检测差错,不纠正差错,不使用序号,也不进行流量控制,可同时支持多种网络层协议。
5、局域网的优点是具有广播功能,从一个站点可很方便的访问全网,便于系统扩展和逐渐演变,提高了系统的可靠性可用性和生存性。
6、共享通信媒体资源的方法有两种,一种是静态划分信道,各种复用技术,二是动态媒体介入,又称多点接入,随机接入或受控接入
7、Ie802委员会曾把局域网的数据链路层拆分成两个子层,即逻辑链路控制子层和媒体接入控制子层,但现在LLC子层已成为历史。
8、计算机与外界局域网的通信主要通过是通讯适配器或网络适配器,它又称为网络接口或网卡,计算机的硬件地址就在适配器中的ROM中
知识点:
虚拟互连网络的概念
IP地址与物理地址的关系
传统的分类IP地址和无分类域间路由选择CIDR
路由选择协议的工作原理
在新一代的互联网设计思路中:网络层只想上提供简单灵活,无连接的,尽最大努力交付的数据报服务
主要有两种:虚电路服务和数据报服务
后面讲到的TCP/IP是在数据报服务的基础上建立的
网际协议IP是TCP/IP体系中两个最重要的协议之一
与IP协议配套的协议还有三个(了解即可)
地址解析协议:ARP
网际控制报文协议:ICMP
网际组管理协议:IGMP
整个网络就是一个单一的,抽象的网络。ip地址就是给互联网上的每一主机或路由的每一个接口分配一个全世界范围内唯一的32位标识符
IP地址由互联网名字和数字分配机构ICANN 进行分配。
IP地址的编排经历了三个历史阶段:
把IP地址划分为三类时是这样考虑的:
每一个IP地址都由网络号和主机号两部分组成
实际上IP地址标志的是一台主机(或路由器)和一条链路的接口
一个网络是指具有相同网络号的主机的集合,所以用转发器或者网桥链接起来的若干个局域网还是一个网络
早IP地址中,所有分配到网络号的网络都是平等的,这里指的平等是互联网同等对待每一个IP地址
物理地址是数据链路层和物理层使用的地址,而IP地址是网络和以上层使用的地址,是一种逻辑地址(IP地址是用软件实现的)
划分子网的原因是ip的利用率不高,两级IP地址不够灵活。所以自然出现了三级IP
IP地址的三级划分只是把IP地址的主机号这部分进行划分,不是改变IP地址原来的网络号
子网掩码:
子网掩码的计算过程比较复杂,有兴趣的同学可以看下边这篇文章:
子网掩码的两种分配方式
我总结了一下关于子网掩码,大家只需要记住以下知识点就ok:
CIDRde 32位子网掩码是一串1和一串0组成。1的个数就是前缀的长度,只要把ip地址和地址掩码诸位进行逻辑与运算,就能得出网络地址
A类地址默认的地址掩码是255.0.0.0
B类地址默认的地址掩码是255.255.0.0
c类地址默认的地址掩码位255.255.255.0
然后把ip地址和地址掩码计算就能得出对应的子网掩码了
IPV6仍然支持无连接传送。但把协议数据单元PUD称为分组,而不是IPV4的数据
主要变化:
1、更大的地址空间
2、扩展的地址层次结构
3、灵活的首部格式
4、改进的选项
5、允许协议继续扩充
6、支持自动分配
7、支持资源的预分配
ip多播是指在互联网上进行多播。只需要发送一次,不需要复制就能发送到多组IP。能够运行多播协议的路由器称为多播路由器
知识点:
运输层基本概念
无连接和UDP的特点
面向链接的TCP的特点
TCP的其他特性
运输层是向上面的应用层提供通讯服务的,属于面向通信部分的最高层,
只有主机的协议栈才有运输层,而网络核心功能部分中的路由器在转发分组的时候都用到下面三层的功能
TCP 是面向连接的,UDP 是面向无连接的
UDP程序结构较简单
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证
应用层所有的应用进程都可以通过运输层传输给IP层,这是复用,ip层收到数据后分发给应用层,这就是分用,
在分用的时候计算机可能不知道具体是哪个应用的功能进程,这个时候就用到端口,
通信的终点是应用进程,只要把所有的传送报文交到对应的端口,剩下的工作就交给TCP和UDP来完成了,
端口是应用层在各种协议进程之间与运输实体进行层间交互的一种地址。
端口分为:
2.客户端使用的端口,数值在49152——65535之间,又叫短暂端口号
特点:
UDP是无连接的
UDP尽最大努力交付
UDP是面向报文的
UDP没有拥塞控制
UDP支持一对一,一对多,多对一和多对多的交互通信
UDP的首部开销小
UDP的首部格式:
1、源端口——在需要对方回信是使用,不需要可以全0
2、目的端口:——在终点交付报文时必须使用
3、长度:——UDP用户数据报的长度,最小值是8
4、检验和——检测UDP用户数据在传输中是否有错,有错就丢弃
TCP的主要特点:
1、TCP是面向链接的运输层协议
2、每一条TCP链接只能有两个端点,每一条TCP连接只能点对点的
3、TCP提供可靠交付的服务
4、TCP提供全双工通信
5、面向字节流:TCP中的字节流是指留到进程或从进程流出的字节序列
TCPDE 的链接:
TCP把链接作为最基本的抽象,每个TCP有两个端点,不是主机和应用进程,TCP的端点是套接字或插口,端口号拼接到ip地址际构成了套接字。
每一条TCP连接唯一地被通信两端的两个端点所确定
TCP的工作原理:
停止等待协议:
4.信道利用率
停止等待协议优点是简单,缺点是信道利用率太低
TCP报文段的首部格式
TCP虽然是面向字节流的,但TCP传送的数据单元确实报文段。
首部固定部分各字段意义
1.长度:从0-31,所以每一行为32位,占4个字节。至少占5行,TCP报头最小20个字节,最大60字节。
2.16位源端口号:发送端端口号
3.16位目的端口号:接收端端口号
4.32位序号:即编号,初始值:第一个数据在第一次交互时由系统随机生成。
序号值如何变化?第一个为随机值,第二个就是发送的数据在整个字节流中的偏移量 + 第一次生成的值
数据值也是从小到达排列:可以保证数据不乱序
如图所示:假设由100个字节数据要发送,初始值为2000,初始值+偏移量即为下一个的序号值。
5.32位确认号:数据发送出去接收端接收后,接收端给发送端回馈确认机制。
若接收端接收到2000,则回复2001。
确认号还能够处理重复的报文段,一旦接收到相同的序号就丢弃
6.4位头部长度:15个4字节,最多60个字节。
对于底层而言,控制协议是一堆数据,发送的还是一堆数据,接收端接收到后如何确定哪些是头部哪些是所携带的数据?
4位头部长度可确认,前20个字节为报头后面是携带的数据。若选项部分携带4字节,则前24字节为头部后面为携带数据。
7.6位保留:占6位,保留为今后使用,目前应设置为0
8.控制位UGR、ACK、PSH、RST、SYN、FIN:
紧急UGR:当UGR置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方的TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。
确认ACK:确认报文段,仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
推送PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方响应。在这种情况下,TCP可以使用PSUH(推送操作)。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快(推送)交付给接收应用进程,而不在等整个缓存都填满了再向上交付。
复位RST:当RST=1时,表明TCP连接出现了严重差错,必须释放连接,然后重新建立新运输连接。**RST=1还可以用来拒接一个非法报文段或拒绝打开一个连接。
同步SYN:在建立连接时用来同步序号。当SYN=1,ACK=0时,表明这是一个连接请求报文段;对方若同意连接,则应在相应的报文段中使SYN=1,ACK=1。因此SYN置1就表示这是一个连接请求或连接接受报文段。
终止FIN:用来释放一个连接,当FIN=1时,表明此报文段的发送方数据已经发送完毕,并要求释放运输连接。
9.16位窗口大小:流量管控,窗口值是[0~216-1]之间的整数。窗口值告诉了对方,从本报文段的确认号算起,允许对方发送的数据量。
心跳包机制:
10.16位校验和:CRC循环冗余检测算法
11.16位紧急指针:TCP的紧急指针是发送端向接收端发送紧急数据的方法。紧急指针是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。
12.选项部分:长度可变,最小0字节,最长达40字节。当没有使用选项部分时,TCP的首部为20字节。
MTU限制:以太网为例1500字节,IP头部20个字节,TCP头部和数据加起来共1480个字节,又因为TCP头部20个字节,所以它所能携带的上层数据为1460个字节。
1、以字节为单位的滑动窗口
TCP的滑动窗口都是以字节为单位的。凡是已发送过的数据,在未收到确认之前,都必须暂时保留,以便在超时重传时使用。发送窗口里面的序号表示允许发送的序号,发送窗口后沿的后面部分表示已经发送并且已经得到确认。
假若发送一个报文段,确认的时间到了还未收到ACK,这时就会触发重传机制,经过了一段时间收到了确认报文,如何判断此报文是对先发送报文的确认还是对后发送报文的确认?
若收到的确认是对重传报文的确认,却被主机当成是对原报文段的确认,这样计算出来的RTT和超时重传时间RTO就会偏大,若后面发送的数据又是经过超时重传才收到确认报文段,按此方法的到的超时重传时间就会越长。
若收到的确认是对原来报文的确认,却被主机当成是对重传文段的确认,这样计算出来的RTT和超时重传时间RTO就会偏小,这样会导致报文段过多的重传。
2、快速重传
3、延迟应答
如果接收数据的主机立刻返回ACK应答,这时候返回的窗口可能比较小。可以等待适量的时间,可以使返回的窗口值增大。
4、捎带应答
客户端服务器在应用层也是一收一发的,客户端给服务器发送一个消息后,相应的服务器也会给客户端回一个消息。那么我们可以在服务器给客户端回消息时捎带回应ACK
三、TCP当中的粘包问题,UDP不存在粘包问题
首先粘包中的”包”指的是应用层的数据包,在TCP协议头中,没有像UDP一样的报文长度,只有一个序号一样的字段。从应用层的角度来看,应用层交付给传输层的数据都是一连串的字节数据,应用程序看到这一连串的字节数据,并不知道是从哪个部分到哪个部分是一个完整的应用数据包。而从传输层的角度来看,TCP是一个报文过来的,按序号排好序的放在缓冲区中。
如何避免粘包问题?
在应用层将包分开,明确两个包的边界
对于定常的包,保证每次都按固定大小读取即可;
对于变长的包,可以在报头的位置约定一个包总长度的字段,从而就知道了包的结束位置;
对于边长的包,还可以在包和包之间使用明确的分隔符(应用层协议是由程序员自己来确定的)
四、TCP异常的情况(常见面试题)
进程终止:进程终止会释放文件描述符。仍然可以发送FIN,和正常关闭没什么区别
机器重启:和进程终止的情况相同
机器掉电/网线断开:接收端认为连接还在,一旦接收端有写入操作,接收端发现连接已经不在了,就会进行reset,即使没有写入操作,TCP自己也内置一个保活定时器,定期访问对方是否还在,如果对方不在,也会把连接释放;
基于TCP的应用层协议有:HTTP、HTTPS、SSH、Telent、FTP、SMTP
TCP一般应用于可靠性传输,应用于文件传输,重要状态更新等重要场景;UDP用于对高速传输和实时性要求较高的通信领域。
此处参考的原文链接
原文链接
1、应用层协议是为了解决某一类应用问题,而问题的解决又是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的,应用层规定了应用进程在通信时所遵循的协议,应用层的许多协议是基于客户服务器的方式,客户是请求方,服务器是服务提供方
2、域名系统DNS是互联网使用的命名系统,用来把人们使用的机器名字转换称为IP地址,DNS是一个联机的分布式数据库系统,并采用客户服务器方式。
域名到IP地址的解析是由愤怒在互联网上的许多域名服务程序(域名服务器)共同完成的
4、互联网采用层次树状结构的命名方法,在任何一台链接在互联网上的主机或者 路由器,都有一个唯一的层次将诶够不名字,既域名,域名中的点和点分十进制IP地址中的点没有关系
5、域名服务器分为根域名服务器,顶级域名服务器,权限域名服务器,本地 域名服务器
6、文件传输协议FTP使用TCP可靠运输服务,在文件传输的时候,FTP的客户端要和服务器之间建立两个并行的TCP链接,控制链接和数据链接,实际用于传输数据的是数据链接。
参考书籍:
计算机网络第七版(谢希仁)
目前先写到这,后面还有一点点内容会抽出时间补上,
大家加油啊!!!!
主要是实在熬不住