概述
文章目录
- 一、概念
- 1、什么是计算机网络?
- 2、计算机网络协议、接口和服务的概念
- 3、OSI与TCP/IP各层的结构与功能
- 二、物理层
- 三、数据链路层
- 四、网络层
- 1、动态路由算法:距离-向量路由算法和链路状态路由算法
- 2、网络地址转换(NAT)
- 3、地址解析协议ARP(Address Resolution Protocol)
- 4、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)
- 5、网际控制报文协议ICMP(Internet Control Message Protocol)
- 五、传输层
- 1、UDP协议
- 2、TCP协议
- 3、TCP连接的建立(三次握手)
- 4、TCP连接的释放(四次挥手)
- 5、TCP拥塞控制
- 6、TCP 和UDP的区别
- 六、应用层
- 1、域名解析系统DNS
- 2、文件传输协议FTP
- 3、电子邮件
- 4、超文本传输协议HTTP
一、概念
1、什么是计算机网络?
- 一般认为,计算机网络是一个将分散的(地理位置不同的)、具有独立功能的计算机系统,通过通信设备(路由等)与线路(光纤等)连接起来,由功能完善的软件实现资源共享和信息传递的系统。
- 计算机网络是一些互联的、自治的计算机系统的集合
2、计算机网络协议、接口和服务的概念
- 协议:为进行网络中对等实体数据交换而建立的规则、标准或约定称为网络协议,它是水平的。协议由语法、语义和同步组成。
- 语法:规定了数据传输的格式。
- 语义:规定了所要完成的功能,即需要发出何种控制信息、完成何种动作以及做出何种应答。
- 同步:规定了执行何红操作的条件、时序关系等,即事件实现顺序的详细说明。
- 接口:上层使用下层服务的入口,又可称为服务访问点(Service Access Point, SAP)。
- 服务:下层为相邻上层提供的功能调用,它是垂直的。
3、OSI与TCP/IP各层的结构与功能
学习计算机⽹络时我们⼀般采⽤折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采⽤⼀种只有五层协议的体系结构,这样既简洁⼜能将概念阐述清楚。
结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。
- 应用层:应⽤层(application-layer)的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。应⽤层协议定义的是应⽤进程(进程:主机中正在运⾏的程序)间的通信和交互的规则。对于不同的⽹络应⽤需要不同的应⽤层协议。在互联⽹中应⽤层协议很多,如域名系统DNS,⽀持万维⽹应⽤的HTTP协议,⽀持电⼦邮件的 SMTP协议等等。我们把应⽤层交互的数据单元称为报⽂。
- 运输层: 运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通⽤的数据传输服务。应⽤进程利⽤该服务传送应⽤层报⽂。“通⽤的”是指并不针对某⼀个特定的⽹络应⽤,⽽是多种应⽤可以使⽤同⼀个运输层服务。由于⼀台主机可同时运⾏多个线程,因此运输层有复⽤和分⽤的功能。所谓复⽤就是指多个应⽤层进程可同时使⽤下⾯运输层的服务,分⽤和复⽤相反,是运输层把收到的信息分别交付上⾯应⽤层中的相应进程。
- 网络层:在计算机⽹络中进⾏通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信⼦⽹。⽹络层的任务就是选择合适的⽹间路由和交换结点, 确保数据及时传送。 在发送数据时,⽹络层把运输层产⽣的报⽂段或⽤户数据报封装成分组和包进⾏传送。在 TCP/IP 体系结构中,由于⽹络层使⽤ IP 协议,因此分组也叫 IP 数据报 ,简称 数据报。
- 数据链路层:数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在⼀段⼀段的链路上传送的,这就需要使⽤专⻔的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将⽹络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每⼀帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
- 物理层:在物理层上所传送的数据单位是⽐特。物理层(physical layer)的作⽤是实现相邻计算机节点之间⽐特流的透明传送,尽可能屏蔽掉具 体传输介质和物理设备的差异。 使其上⾯的数据链路层不必考虑⽹络的具体传输介质是什么。“透明传送⽐特流”表示经实际电路传送后的⽐特流没有发⽣变化,对传送的⽐特流来说,这个电路好像是看不⻅的。
二、物理层
三、数据链路层
四、网络层
1、动态路由算法:距离-向量路由算法和链路状态路由算法
(1)距离-向量路由算法:在距离-向量路由算法中,所有的节点都定期地将它们的整个路由选择表传给所有与之直接相邻的结点。(典型的距离-向量路由算法是RIP算法。)这种路由选择表包含:
- 每条路径的目的地(另一结点)。
- 路径的代价(也称距离)。在常见的距离-向量路由算法的RIP算法中,它采用“跳数”作为距离的度量。
更新路由选择表的情况:
1)被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入新的路由。
2)发送来的路由信息中有一条到大某个目的地的路由,该路由比当前使用的路由有较短的距离(较小的代价),此种情况下,则进行替换。
(2)链路状态路由算法:链路状态路由算法在链路状态发生变化时,就会利用Dijsktra最短路径算法重新计算路由,从单一的源出发计算到达所有目的结点的最短路径。(典型的链路状态路由算法是OSPF算法。)
(3)距离-向量路由算法与链路状态路由算法的比较:在距离-向量路由算法中,每个结点仅与它的直接邻居交谈,它为它的邻居提供了从自己到网络中所有其他结点的最低费用估计。在链路状态路由算法中,每个结点通过广播的方式与其他结点进行交谈,但它仅告诉与它们与它直接相连的链路的费用。想较之下,距离-向量路由算法有可能遇到路由环路等问题。
2、网络地址转换(NAT)
- 概念:网络地址转换(NAT),是通过将专用网络地址(如企业内部Intranet)转换为公用地址(如Internet),从而对外部隐藏了内部管理的的IP地址。
- 目的(作用):1)它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。2)它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
- 私有IP地址网段:
1)A类:1个A类网段,即10.0.0.0~10.255.255.255
2)B类:16个B类网段,即172.16.0.0~172.31.255.255
3)C类:256个C类网段,即192.168.0.0~192.168.255.255
由于NAT路由器“看到了端口”,所以它工作在传输层。
3、地址解析协议ARP(Address Resolution Protocol)
-
为什么需要ARP?
IP地址是网络层使用的地址,它是分层次等级的。硬件地址是是数据链路层使用的地址(如MAC地址),它是平面式的。IP分组通过多次路由转发到目标网络后,则改为在目标网络LAN中通过数据链路层的MAC地址以广播方式寻址。这样可以提高路由选择的效率。 -
概念:完成IP地址到MAC地址的映射,这就是地址解析协议ARP(Address Resolution Protocol)。
-
ARP协议使用过程:
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。 -
ARP协议的四种典型情况
1)主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
2)主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;(剩下的事交给路由器完成。)
3)路由器发给本网络的主机A:用ARP找到主机A的硬件地址;
4)路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。(剩下的事交给路由器完成。)
由于ARP协议“看到了”IP地址,所以它工作在网络层。
4、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)
- 概念:DHCP常用于给主机动态分配IP地址,提供了即插即用联网的机制。
- DHCP协议工作原理:
1)需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户。
2)本地网络上所有主机收到此广播报文,但只有DHCP服务器才回答此广播报文。
3)DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文。
DHCP是应用层协议,它是基于UDP的。
5、网际控制报文协议ICMP(Internet Control Message Protocol)
- 目的:为了提高IP数据报交付成功的机会,在网络层使用ICMP来允许主机或者路由器报告差错和异常情况。ICMP报文作为IP数据报的数据,加上数据报的首部,组成IP数据报发送出去。
- 种类:ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
- ICMP差错报告报文分为一下五种类型:1)终点不可达。2)源点抑制。3)时间超过。4)参数问题。5)改变路由(重定向)。
- ICMP询问报文有以下四种类型:1)回送请求和回答报文。2)时间戳请求和回答报文。3)掩码地址请求和回答报文。4)路由器询问和通告报文。 最常用的是前两种。 我们常用的PING命令就是属于回送请求和回答报文。
ICMP协议是IP层协议。
五、传输层
1、UDP协议
- 概念:UDP协议只是做了传输协议能够做的最少工作,只是在IP的数据报服务上增加了两个最基本的服务:复用和分用以及差错检测。
- UDP的优点:
1)UDP无需建立连接。(因此UDP不会引入建立连接的时延,时间快)
2)无连接状态。(UDP不维护连接状态)
3)分组首部开销小。(UDP首部仅有8字节的开销,但是TCP有20字节)
4)应用层能更好地控制要发送的数据和发送时间。(UDP没有拥塞控制,因此网络中的拥塞不会影响主机的) - UDP的首部格式:
UDP数据报包含两个部分:UDP首部和用户数据报。
- UDP校验
UDP校验是通过在UDP数据报之前增加12个直接的伪首部实现的。伪首部既不向下传送也不向上递交,而仅仅是为了计算校验和。
- UDP校验过程
2、TCP协议
- 概念:TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复问题。
- TCP协议的主要特点:
1)TCP是面向连接的传输层协议。
2)每一条连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)
3)TCP提供可靠的的交付任务,保证传送的数据无差错、不丢失、不重复且有序。
4)TCP提供全双工通信,TCP允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
5)TCP是面向字节流的。 - TCP报文段
字段意义选择性讲解:
1)序号字段:占4字节。TCP是面向字节流的,所以TCP连接中数据流的每个字节都编上了序号。序号字段代表本报文段所发送数据的第一个字节的序号。
2)确认号字段:占4字节。是期望收到对方的下一个报文段的数据的第一个字节的序号。若确认号=N,则表明到序号N-1位置所有数据都已正确收到。
3)确认位ACK:只有ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定:当连接建立后,所有报文段ACK都置为1。
4)同步位SYN:同步SYN=1表示这是一个连接请求或连接接收报文。
5)终止位FIN:用来释放一个连接。FIN=1表明此报文段的发送方数据已经发送完毕,并请求释放传输连接。
3、TCP连接的建立(三次握手)
- 第一步:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1。另外,客户机会随机选择一个起始序号seq=x(连接请求报文不携带数据,但要消耗一个序号)。
- 第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为x+1,并且服务器随机产生起始序号seq=y(确认报文不携带数据,但也要消耗一个序号)。确认报文段同样不包含应用层数据。
- 第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置1,序号字段为x+1,确认号字段ack =y+1。该报文段可以携带数据,若不携带数据则不消耗序号。
成功进行以上三步后,就建立了TCP连接,接下来就可以传送应用层数据。TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。
另外,值得注意的是,服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击
为什么需要三次握手?(重要)
三次握⼿的⽬的是建⽴可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,⽽三次握⼿最主要的⽬的就是双⽅确认⾃⼰与对⽅的发送与接收是正常的
- 第⼀次握⼿:Client 什么都不能确认;Server 确认了对⽅发送正常,⾃⼰接收正常
- 第⼆次握⼿:Client 确认了:⾃⼰发送、接收正常,对⽅发送、接收正常;Server 确认了:对⽅发送正常,⾃⼰接收正常
- 第三次握⼿:Client 确认了:⾃⼰发送、接收正常,对⽅发送、接收正常;Server 确认了:⾃⼰发送、接收正常,对⽅发送、接收正常
所以三次握⼿就能确认双发收发功能都正常,缺⼀不可。
为什么要传回 SYN?
接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了
SYN 是 TCP/IP 建⽴连接时使⽤的握⼿信号。在客户机和服务器之间建⽴正常的 TCP ⽹络连接时,客户机⾸先发出⼀个 SYN 消息,服务器使⽤ SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK(Acknowledgement[汉译:确认字符 ,在数据通信传输中,接收站发给发送站的⼀种传输控制字符。它表示确认发来的数据已经接受⽆误。 ])消息响应。这样在客户机和服务器之间才能建⽴起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
传了 SYN,为啥还要传 ACK?
双⽅通信⽆误必须是两者互相发送信息都⽆误。传了 SYN,证明发送⽅到接收⽅的通道没有问题,但是接收⽅到发送⽅的通道还需要 ACK 信号来进⾏验证。
4、TCP连接的释放(四次挥手)
参与TCP连接的两个进程任何一个都能终止该连接。
- 第一步:客户机打算关闭连接时,向其TCP发送一个连接释放报文段,并停止发送数据,主动关闭TC连接,该报文段的FIN标志位假置1,seq=u,它等于前面已传送过的数据的最后一个字节的序号加1(FIN报文段即使不携带数据,也要消耗一个序号)。TCP是全双工的,即可以想象为一条TCP连接上有两条数据通路。发送FIN报文时,发送FIN的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。
- 第二步:服务器收到连接释放报文段后即发出确认,确认号是ack = u+1,而这个报文段自己的序号是v,等于它前面已传送过的数据的最后一个字节的序号加1。此时,从客户机到服务器这个方向的连接就释放了,TCP 连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。
- 第三步:若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时具及出FIN=1的连接释放报文段。
- 第四步:客户机收到连接释放报文段后,必须发出确认。在确认报文段中,ACK字段被置为1,确认号ack = w+1,序号seq= u+1。此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后,A才进入连接关闭状态。
为什么要四次挥⼿?
任何⼀⽅都可以在数据传送结束后发出连接释放的通知,待对⽅确认后进⼊半关闭状态。当另⼀⽅也没有数据再发送的时候,则发出连接释放通知,对⽅确认后就完全关闭了TCP连接。
举个例⼦:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B可能还会有要说的话,A 不能要求 B 跟着⾃⼰的节奏结束通话,于是 B 可能⼜巴拉巴拉说了⼀通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。
想弄清楚三次握手和四次挥手,可以参考:https://blog.csdn.net/qzcsu/article/details/72861891
5、TCP拥塞控制
为了更好的对传输层进行拥塞控制,因特网建议标准定义了以下四种算法:慢开始、拥塞控制、快重传、快恢复。
发送方在确定发送报文段的速率时,既要根据接收方的接收能力,又要从全局考虑不要使网络发生拥塞。因此,TCP协议要求发送方维护以下两个窗口:
1)接收窗口rwnd,接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量。由接收方根据其放在TCP报文的首部的窗口字段通知发送方。
2)拥塞窗口cwnd,发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络的当前容量。只要网络未出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入网络的分组数。
发送窗口的上限值应取接收窗口rwnd和拥塞窗口 cwnd中较小的一个,即
发送窗口的上限值 = min[rwnd, cwnd]
慢开始和拥塞避免
-
初始时,拥塞窗口置为1,即 cwnd = 1,慢开始门限置为16,即ssthresh= 16。慢开始阶段,cwnd的初值为1,以后发送方每收到一个确认ACK,cwnd 值加1,也即经过每个传输轮次(RTT),cwnd呈指数规律增长。
-
拥塞窗口cwnd增长到慢开始门限ssthresh时(即当cwnd = 16时),就改用拥塞避免算法,cwnd按线性规律加性增长。
-
假定cwnd =24时网络发生拥塞,更新ssthresh 的值为12(即变为超时时cwnd值24的一半),cwnd重置1,并执行慢开始算法,cwnd=12时,改为拥塞避免算法。
注意在慢开始(指数级增长)阶段,若2cwnd>ssthresh,则下一个RTT的cwnd等于ssthresh,而不等于2cwnd,即 cwnd不能跃过ssthresh值。如上图所示,在第16个轮次时cwnd=8、ssthresh= 12,在第17个轮次时cwnd = 12,而不等于16。
快重传和快恢复
- 快重传:快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。
- 快恢复:快恢复算法的原理如下:发送端收到连续三个冗余ACK(即重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh 设置为出现拥塞时发送方cwnd 的一半。与慢开始(慢开始算法将拥塞窗口cwnd设置为1)的不同之处是,它把cwnd的值设置为慢开始门限ssthresh 改变后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。由于跳过了cwnd 从1起始的慢开始过程,所以被称为快恢复。
6、TCP 和UDP的区别
1)UDP 在传送数据之前不需要先建⽴连接,远地主机在收到 UDP 报⽂后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是⼀种最有效的⼯作⽅式(⼀般⽤于即时通信),⽐如: QQ 语⾳、 QQ 视频 、直播等等。
2)TCP 提供⾯向连接的服务。在传送数据之前必须先建⽴连接,数据传送结束后要释放连接。TCP 不提供⼴播或多播服务。由于 TCP 要提供可靠的,⾯向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握⼿来建⽴连接,⽽且在数据传递时,有确认、窗⼝、重传、拥塞控制机制,在数据传完后,还会断开连接⽤来节约系统资源),这⼀难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的⾸部增⼤很多,还要占⽤许多处理机资源。TCP ⼀般⽤于⽂件传输、发送和接收邮件、远程登录等场景。
六、应用层
1、域名解析系统DNS
2、文件传输协议FTP
3、电子邮件
4、超文本传输协议HTTP
最后
以上就是秀丽秋天为你收集整理的计算机网络知识点总结的全部内容,希望文章能够帮你解决计算机网络知识点总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复