计算机网络

1.OSI的七层模型和TCP/IP的四层模型

TCP/IP五层模型:物理层、数据链路层、网络层、传输层、应用层
TCP/IP四层模型:网络接口层、网际层、传输层、应用层
OSI七层模型及各层作用:
物理层:传输介质及将电信号转换成0/1比特
数据链路层:将比特组装成帧及点对点传输
网络层:数据从源到宿的传递及网际互联
传输层:提供端到端的可靠或不可靠传输及差错控制、流量控制等
会话层:建立、管理和终止会话
表示层:对数据进行翻译、加密和压缩
应用层:为操作系统或网络应用程序提供访问网络服务的接口。


2.TCP/IP中,各层协议的简单介绍?

(1)数据链路层:PPP协议(点对点协议),SCMA/CD (带冲突检测的载波监听多路访问技术)
(2)网络层:IP协议、ICMP协议(网际控制报文协议)、IGMP(网际组管理协议)、ARP协议、RARP协议,OSPF(开放路径最短优先协议)。
ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
(3)传输层:UDP协议、TCP协议。
(4)应用层:FTP(文件传送协议)、Telenet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议。
TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,
DHCP协议(动态主机配置协议):一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。


3.TCP和UDP的区别

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
TCP对应的协议和UDP对应的协议:
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:简单邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5) HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP:简单文件传输协议,该协议在熟知端口69上使用UDP服务。


4.在浏览器中输入www.baidu.com后执行的全部过程?

1:客户端浏览器通过DNS解析到要访问的网址的IP地址,通过这个IP地址找到客户端到服务器的路径。
2:浏览器产生了一个http包,将该包交给TCP(即传输层),传输层把http包分成报文段,添加源端口和目的端口,并与目的服务器的TCP程序进行连接并建立对话。
3:传输层将信息包转发到IP层(网络层),网络层主要做的是通过查找路由表确定如何到达服务器,同时,网络层将自己的信息加到原有的数据包上,形成新的数据包。
4:数据包由网络层转发到网络接口层(或数据链路层),在该层数据包被转化成以太网帧,然后通过物理层进行传输。
5:目的服务器对接收到的数据包进行解析,过程与上述形成数据包的过程相反。
6:目的服务器会按照与上述相同的过程形成一个数据包,发送给客户端,则客户端浏览器就可以显示出所需网址的内容了。


5.TCP的三次握手和四次放手

三次握手流程

客户端发个请求“开门呐,我要进来”给服务器
服务器发个“进来吧,我去给你开门”给客户端
客户端有很客气的发个“谢谢,我要进来了”给服务器

四次挥手流程

客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他
服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走
服务器把门关上后,发个“我关门了”给客户端,然后等客户端走(尼玛~矫情啊)
客户端发个“我知道了,我走了”,之后自己就走了

TCP报文格式
TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:

在这里插入图片描述

上图中有几个字段需要重点介绍下:
(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置连接。
(E)SYN:发起一个新连接。
(F)FIN:释放一个连接。

具体流程图如下:

三次握手的过程(客户端我们用A表示,服务器端用B表示)

前提:A主动打开,B被动打开
在这里插入图片描述

四次分手的过程(客户端我们用A表示,服务器端用B表示)

前提:A主动关闭,B被动关闭
在这里插入图片描述

6.进程线程区别

(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元
(进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位)
(2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程至少包括一个线程。
(3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束
(4)线程是轻量级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的
(5)线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源
(6)线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志

7.进程之间的通信方式

(1)管道(匿名管道(pipe亲缘关系的进程通信)、命名管道(mkfifo/mknod))
(2)消息队列:是基于消息的、用无亲缘关系的进程间通信,主要函数:msgget、msgsend、msgrecv、msgctl
(3)信号量:相当于一把互斥锁,通过p、v操作,主要函数:semget、semop、semctl
(4)共享内存:是进程间通信速度最快的,所以用经常是集合信号量或互斥锁来实现同步,shmget、shmat、shmdt、shmctl
详细解释:
进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信,交换信息的方法。根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型:
1、低级通信,控制信息的通信(主要用于进程之间的同步,互斥,终止和挂起等等控制信息的传递)
2、高级通信,大批数据信息的通信(主要用于进程间数据块数据的交换和共享,常见的高级通信有管道,消息队列,共享内存等).

  • 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
  • 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
  • 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。不是用于交换大批数据,而用于多线程之间的同步.常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
  • 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  • 信号 ( signal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
  • [共享内存( shared memory )] :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
    -套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
8.死锁?死锁产生的原因?死锁的必要条件?怎么处理死锁?

(1)相互等待资源而产生的一种僵持状态,如果没有外力的干预将一直持续这个状态
(2)系统资源不足、相互竞争资源、请求资源顺序不当
(3)互斥、不可抢占、循环等待、请求与保持
(4)因为互斥是不可改变的,所以只能破坏其他三个条件中的一个来解除死锁,方法:剥夺资源、杀死其中一个线程

6、什么是虚拟内存?
解析:是将进程部分装入内存中,从而能实现一个很大的程序能在一个比它小的内存中运行,它的主要实现是靠程序的换进换出来实现的,因为内存中03G是用户使用,34G才是内存使用,通过映射来实现来进行逻辑地址到物理地址的映射

7、虚拟地址、逻辑地址、线性地址、物理地址的区别?
解析: 分段机制把一个逻辑地址转换为线性地址;接着,分页机制把一个线性地址转换为物理地址。
(1)虚拟地址:虚拟内存映射出来的地址
(2)逻辑地址:程序的段加偏移量形成的,C/C++程序中取地址求出来的地址就是逻辑地址
(3)线性地址:是逻辑地址到物理地址的中间层,只有启动分页机制的时候才有线性地址,如果没有分页机制,那么线性地址就是物理地址
(4)物理地址:是内存中实实在在存在的硬件地址,
逻辑地址(启动分段)–》线性地址(启动分页)–》物理地址

9.同步和异步的区别

如页面响应,有些JS代码在某些情况在需要使用,并不是页面初始化的时候就要用到。延迟加载就是为了解决这个问题。将JS切分成许多模块,页面初始化时只加载需要立即执行的JS,然后其它JS的加载延迟到第一次需要用到的时候再加载。类似图片的延迟加载。


10.单通道、半双工通道、双工通道

11.ICMP

ICMP是InternetControl Message Protocol,因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP报文有两种:差错报告报文和询问报文。


11.IP地址分段

A类网络的IP地址范围为1.0.0.1-127.255.255.254;
B类网络的IP地址范围为:128.1.0.1-191.255.255.254;
C类网络的IP地址范围为:192.0.1.1-223.255.255.254、

1.子网掩码
2.纯虚函数
3. char、int、long…所占字节
4.进程之间的通信方式
5.交换机与路由器有什么区别?

①工作所处的OSI层次不一样,交换机工作在OSI第二层数据链路层,路由器工作在OSI第三层网络层
②寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址
③转发速不同:交换机的转发速度快,路由器转发速度相对较慢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值