对于计算机网络,个人觉得网络层、运输层、应用层问的可能性大一点,所以这三章的篇幅会多一点;对于网络我是比较头疼的,太多的协议和概念,所以如果有时间的话建议还是看一看教材,毕竟有太多细节难以通过一篇博客讲述;
由物理层、数据链路层、网络层构成的通信子网为网络中的主机提供点到点通信,传输层提供端到端通信;通俗的来说,点到点通信指的是主机之间的通信,而端到端通信指的是主机的端口,也就是进程之间的通信;
同:
(1)都体现分层思想;
(2)都有网络层、传输层、应用层;
异:
(1)OSI七层(物理、数据链路、网络、传输、会话、表示、应用)TCP/IP四层(数据接口、网络、传输、应用);
(2)OSI更具面向对象,TCP/IP对于异构网络的处理更加合理;
(3)OSI是理论上的标准,TCP/IP是实际上的标准;
TCP/IP的核心思想是“网络互联”,将使用不同低层次协议的异构网络,在运输层、网络层建立一个统一的虚拟逻辑网络;
面向连接服务的特点是,在服务之前先建立连接,然后传输数据,服务结束后释放连接;优点是保证数据传输安全,分组不丢失、不失序、无差错,缺点是建立维护和释放链路需要一定的资源和时间;
无连接服务的特点是,在服务无需事先建立连接,链路在数据传输过程中动态分配;优点是灵活迅速,缺点是不能防止报文丢失、失序、重复;
收发动作不一定同步,可能导致接收失败;
模拟通信方式主要是通过调制解调器将数字信号转换成模拟信号在模拟信道上传输。模拟通信方式可以利用目前覆盖面最广、普遍应用的模拟语音通信信道,用于语音通信信道的电话交换网技术较为成熟,造价较低,其缺点是数据传输速率较低,系统效率低;
数字通信方式是利用数字信道直接传输数字数据信号的方法。数字通信方式可以达到很高的传输速率,是目前积极发展与广泛应用的数据通信方式;
多路复用技术是将若干个彼此独立的信号,合并为一个可以在同一个信道上同时传输和复合信号的方法。主要包括频分复用、时分复用、波分复用和码分复用;
中继器工作在物理层,用来连接两个网段,以消除信号传输过程中的失真和衰减;
集线器工作在物理层,实质上是一种多端口中继器;
网桥工作在数据链路层,它可以在采用不同数据链路层协议、不同传输介质的局域网之间接收、过滤、存储与转发数据帧;
交换机工作在数据链路层,原理等同于多端口网桥。作用是连接数个相同网段的不同主机,减少网内冲突,隔离冲突域。
交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发;
载波侦听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection, CSMA/CD)协议是CSMA 协议的改进方案;
“载波帧听”就是发送前先侦听,即每个站在发送数据之前先要检测一下总线上是否有其他站点正在发送数据,若有则暂时不发送数据,等待信道变为空闲时再发送;
“碰撞检测”就是边发送边侦听,即适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送数据;
工作流程可简单概括为“先听后发,边听边发(区别于CSMA 协议),冲突停发,随机重发”;
口述版本
当信道上的源点要发送信息的时候,要先监听信道上是不是有其他的源点在发送,如果有的话,就不发送,如果没有的话就可以发送,不过在发送的时候还要继续监听信道
网络层向运输层提供“面向连接”虚电路服务或“无连接”数据报服务;
前者预约了通信双方所需要的一切资源,优点是保证服务通信质量,即分组不重复、不丢失、按序到达,保证分组交付的时限,缺点是路由器复杂,提高了成本;
后者则是尽最大努力交付数据报,不提供服务质量承诺;
作为IP传输的三种方式之一,组播指的是报文从一个源发出,发送到一组特定的接收者,相同的报文在每条链路上仅有一份;
组播一定仅用于UDP(因为TCP是一对一的),它对将报文同时送往多个接收者的应用非常重要;
组播(一对多)仅会将数据报文发送给有需求的用户;
广播(一对全体)会将数据报文发送给本网段所有用户,不管用户有没有需求;
转发器:物理层设备,负责放大信号;
交换机(Switch):数据链路层,负责隔离冲突域;
路由器(Router):网络层,负责实现数据的网络传递;
网关(Gateway):网络层以上,负责不同体系结构网络协议转换;
路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成分组转发;
路由器主要完成两个功能:一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。
子网掩码将IP地址划分为网络地址和主机地址两部分;
域名地址是平时上网用的地址,方便用户记忆;
IP地址是主机在网络层和以上各层中的地址,是一种逻辑地址;
MAC地址是主机的硬件地址,在数据链路层和物理层使用;
它们之间没有什么绝对关系,域名系统将域名地址解析为IP地址,ARP将IP地址解析为MAC地址;
主机A先检查自己的ARP表,若其中有主机B的IP地址对应的MAC地址,则直接将IP数据报封装成帧发送给主机B;
若其中没有主机B的MAC地址,则以广播方式发送一个ARP请求报文,接收到广播的主机B将主机A的IP地址和对应的MAC地址存于主机B的ARP表中,并向以单播方式主机A发送一个ARP响应报文(带有主机B的MAC地址);
主机A收到了响应报文后,将响应报文中的MAC地址存入自己的ARP表中以便后续报文转发,并将IP数据报封装成帧发送给主机B;
无分类域间路由选择CIDR是解决IP地址紧缺的一个好办法;CIDR记法在IP地址后面加上斜线,写上前缀所占的位数。前缀用来指明网络,前缀后面的部分是后缀,用来指明主机;CIDR把前缀都相同的连续的IP地址组成一个“CIDR地址块”。IP地址的分配都以CIDR地址块为单位;
距离矢量路由算法:网络中每个路由器维护一张矢量表,表中记录了到不同路由器的距离(跳数)和接口,并且定期和周围路由器交换矢量表来更新;
链路状态路由算法:基于迪杰斯特拉,每一个路由器都会发现自己身边的邻居节点,然后将自己与邻居节点之间的链路状态包广播出去,发送到整个网络。当网络中的路由器接收到这个信息包后,将该包与自身路由器上的信息拼接,最终形成一个全网拓扑视图;
常见的路由选择协议有RIP和OSPF;
RIP:选择路由的度量标准是跳数,如果大于15跳则会丢弃数据报;
OSPF:底层是迪杰斯特拉,选择路由的度量标准是带宽、延迟;
为了提高IP数据报的交付成功机会,在网络层使用了网际控制报文协议来允许主机或路由器报告差错和异常情况;
ICMP报文有两种,ICMP差错报告报文和ICMP询问报文;
ICMP的一个重要应用就是PING,用来测试两台主机之间的连通性;
- 采用无分类编制CIDR,使IP地址的分配更加合理;
- 采用网络地址转换(NAT)方法以节省全球IP地址;
- 采用具有更大地址空间的IPv6;
(1)更大的地址空间;
(2)灵活的首部格式;
(3)改进的选项;
(4)支持即插即用(即自动配置);因此IPv6不需要DHCP
(5)支持资源预分配;
(6)IPv6首部改为8字节对齐(即首部长度必须是8字节的整数倍);原来的IPv4为4字节对齐;
(7)IPv6的地址使用冒号十六进制记法;
(8)IPv6允许协议继续扩充;
使用NAT(Network Address Translation,网络地址转换),可以在专用网络使用专用IP地址,仅在连接互联网的路由器使用全球IP地址,这样就大大节省了宝贵的IP地址;同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的可能性;
TCP提供面向连接的可靠的字节流服务,tcp链路上必须是一对一的全双工通信;较适用于对数据传输可靠性要求比较高的场景,如文本传输;
UDP提供无连接的尽最大努力的面向报文服务,支持一对一、一对多、多对一、多对多通信,首部开销小,没有拥塞控制;适用于效率要求较高、准确率相对低的场景,如视频通话等;
TCP校验、序号、确认、重传
拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。
流量控制:指点对点通信量的控制,是端到端正的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收
握手:假设主机A为客户端,主机B为服务端。主机A向B发送连接请求报文段,主机B对收到的主机A的报文段进行确认,主机A对主机B的确认进行确认。
挥手:主机A向主机B发送一个连接释放报文,主机B收到连接释放报文后发出确认。主机B向主机A发送连接释放报文,主机A接收到连接释放报文后发出确认。
因为TCP连接是全双工通信,客户端发送FIN报文,收到服务器的确认后,客户端到服务器的连接就断开了;但此时服务器还可以向客户端发送数据,只有当服务器发送FIN报文并收到客户端的确认后,TCP连接才是真正断开;
客户端要确认服务端接收到了ACK报文,如果2MSL内都没有收到服务端的FIN报文则推断ACK报文传达,关闭TCP连接;
这主要是为了防止两次握手情况下已失效的连接请求报文段突然又传送到服务器而产生错误;
假设客户端目前没有发送请求,而服务器接收了一个失效的请求,于是向客户端应答,由于“两次握手”,服务器认为新的连接已经建立一直等待客户端发来数据,但客户端并不会理睬服务器,因此服务端的资源就被白白浪费了;
ICMP:网际控制报文协议,作用是检测传送数据是否出现差错,确定发送错误的类型,并将出错信息报告给发送数据的主机;
DHCP:动态主机配置协议,作用是对加入网络的计算机进行IP地址与相关信息的配置;
STMP:简单邮件传送协议,作用是传送邮件;
域名解析就是将方便记忆的域名解析为网络层的IP地址;为了提高效率,采用了域名缓存技术,在服务器和主机中设置了一个专用内存缓冲区,用来存放最近解析过的域名及其对应IP地址的映射;
FTP是文件传送协议,基于TCP
TFTP是简单文件传送协议,基于UDP
(1)HTTP传输的是明文数据,未加密,安全性低;HTTPS数据传输过程是加密的,安全性好;
(2)HTTP页面响应速度比HTTPS要快;
(3)HTTP使用的端口是80,HTTPS使用的端口是443;
(4)HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
1.浏览器分析链接指向页面的URL。
2.浏览器向DNS请求解析域名的IP地址。
3.域名系统DNS解析出域名的IP地址。
4.浏览器与该服务器建立TCP连接(默认端口号80)
5.浏览器发出HTTP请求。
6.服务器通过HTTP响应把文件发送给浏览器。
7.TCP连接释放。
8.浏览器将所得到的文件进行解释,并将web页显示给用户。