## 计算机网络基础知识汇总

1、TCP为什么需要3次握手,4次断开?
“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。 因为客户端发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达服务器端。本来这是一个早已失效的报文段。但服务器端收到此失效的连接请求报文段后,就误认为是客户端再次发出的一个新的连接请求。于是就向客户端发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要服务器端发出确认,新的连接就建立了。由于现在客户端并没有发出建立连接的请求,因此不会理睬服务器端的确认,也不会向服务器端发送数据。但服务器端却以为新的运输连接已经建立,并一直等待客户端发来数据。这样,服务器端的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止服务器端一直等待,浪费资源。
为什么4次断开?
因为TCP有个半关闭状态,假设A.B要释放连接,那么A发送一个释放连接报文给B,B收到后发送确认,这个时候A不发数据,但是B如果发数据A还是要接受,这叫半关闭。然后B还要发给A连接释放报文,然后A发确认,所以是4次。
在tcp连接握手时为何ACK是和SYN一起发送,这里ACK却没有和FIN一起发送呢。原因是因为tcp是全双工模式,接收到FIN时意味将没有数据再发来,但是还是可以继续发送数据。

2、TCP和UDP有什么区别?
TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。通信双方彼此交换数据前,必须先通过三次握手协议建立连接,之后才能传输数据。TCP提供超时重传,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP是用户数据报协议,是一个简单的面向无连接的协议。UDP不提供可靠的服务。在数据数据前不用建立连接故而传输速度很快。UDP主要用户流媒体传输,IP电话等对数据可靠性要求不是很高的场合。

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

5、ARP是地址解析协议,简单语言解释一下工作原理。
(1)首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
(2)当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
(3)当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
(4)源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。

9、数据链路层协议可能提供的服务?
成帧、链路访问、透明传输、可靠交付、流量控制、差错检测、差错纠正、半双工和全双工。最重要的是帧定界(成帧)、透明传输以及差错检测。

10、网络接口卡(网卡)的功能?
(1)进行串行/并行转换。
(2)对数据进行缓存。
(3)在计算机的操作系统安装设备驱动程序。
(4)实现以太网协议。

12、TTL是什么?作用是什么?哪些工具会用到它(ping traceroute ifconfig netstat)?
TTL是指生存时间,简单来说,它表示了数据包在网络中的时间,经过一个路由器后TTL就减一,这样TTL最终会减为0,当TTL为0时,则将数据包丢弃,这样也就是因为两个路由器之间可能形成环,如果没有TTL的限制,则数据包将会在这个环上一直死转,由于有了TTL,最终TTL为0后,则将数据包丢弃。ping发送数据包里面有TTL,但是并非是必须的,即是没有TTL也是能正常工作的,traceroute正是因为有了TTL才能正常工作,ifconfig是用来配置网卡信息的,不需要TTL,netstat是用来显示路由表的,也是不需要TTL的。

13、路由表是做什么用的?在Linux环境中怎么配置一条默认路由?
路由表是用来决定如何将一个数据包从一个子网传送到另一个子网的。
路由表的每一行至少有目标网络号、子网掩码、到这个子网应该使用的网卡这三条信息。当路由器从一个网卡接收到一个包时,它扫描路由表的每一行,用里面的子网掩码与数据包中的目标IP地址做逻辑与运算(&)找出目标网络号。如果得出的结果网络号与这一行的网络号相同,就将这条路由表六下来作为备用路由。如果已经有备用路由了,就载这两条路由里将网络号最长的留下来,另一条丢掉。如此接着扫描下一行直到结束。如果扫描结束仍没有找到任何路由,就用默认路由。确定路由后,直接将数据包送到对应的网卡上去。在具体的实现中,路由表可能包含更多的信息为选路由算法的细节所用。
在Linux上可以用“route add default gw<默认路由器 IP>”命令配置一条默认路由。

14、RARP?
逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。

15、运输层协议与网络层协议的区别?
网络层协议负责的是提供主机间的逻辑通信
运输层协议负责的是提供进程间的逻辑通信

16、说说静态路由和动态路由有什么区别。
静态路由是由管理员手工配置的,适合比较简单的网络或需要做路由特殊控制。而动态路由则是由动态路由协议自动维护的,不需人工干预,适合比较复杂大型的网络。
路由器能够自动地建立自己的路由表,并且能够根据实际实际情况的变化适时地进行调整。动态路由机制的运作依赖路由器的两个基本功能:对路由表的维护;路由器之间适时的路由信息交换。

17、HTTP的长连接和短连接?
HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议.
短连接:浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
长连接:当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件中设定这个时间。实现长连接要客户端和服务端都支持长连接。
TCP短连接: 客户端向服务器端发起连接请求,服务器端接到请求,然后双方建立连接。客户端向服务器端发送消息,服务器端回应客户端,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是客户端先发起 close操作.短连接一般只会在 客户端/服务器端间传递一次读写操作
TCP长连接: 客户端向服务器端发起连接,服务器端接受客户端连接,双方建立连接。客户端与服务器端完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

18、 IO中同步与异步,阻塞与非阻塞区别
同步和异步关注的是消息通信机制
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是由调用者主动等待这个调用的结果。
而异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。
非阻塞:不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

  1. OSI,TCP/IP,五层协议的体系结构
    OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
    TCP/IP分层(4层):网络接口层、网际层、运输层、应用层。
    每一层的作用如下
    物理层:激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。
    数据链路层:数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
    网络层:网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能。
    传输层:第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
    会话层:会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
    表示层:表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
    应用层:为操作系统或网络应用程序提供访问网络服务的接口。

  2. TCP/IP中,每一层对应的协议
    网络层:IP协议、ICMP协议、ARP协议、RARP协议。
    传输层:UDP协议、TCP协议。
    应用层:FTP(文件传送协议)、Telenet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议。

  3. TCP对应的协议和UDP对应的协议
    TCP对应的协议:
    (1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。
    (2) Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。
    (3) SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。
    (4) POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。
    (5)HTTP协议:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

  1. IP地址的分类
    A类地址:以0开头,第一个字节范围:0~127;
    B类地址:以10开头,第一个字节范围:128~191
    C类地址:以110开头,第一个字节范围:192~223;
    D类地址:以1110开头,第一个字节范围为224~239;

  2. TCP的可靠性如何保证?
    TCP的可靠性是通过顺序编号和确认(ACK)来实现的。

  3. TCP三次握手和四次挥手的全过程
    第一次握手: 客户端 将标志位 SYN 设置为 1,随机产生一个 Number 值 SEQ=100,并将数据发送给 服务端,客户端 进入 SYN_SENT 状态,等待 服务端 确认;
    第二次握手: 服务端 收到数据包后 客户端 设置的标志位 SYN=1 知道 客户端 要求建立连接,服务端 将标志位 SYN 和 ACK 都置为 1,并且发送一个确认序号 ACK=100+1,然后随机产生一个值 SEQ=130,并将该数据包发送给 客户端 以确认连接请求,服务端 进入 SYN_RCVD 状态。
    第三次握手: 客户端 收到确认后,检查 ACK 状态是否为 100+1,ACK 是否为 1,如果正确则将标志位 ACK 置为 1,ACK=130+1,并将该数据包发送给 服务端,服务端 检查 ACK 是否为 130+1,ACK 是否为1,如果正确则连接建立成功,客户端 和 服务端 进入 ESTABLISHED 状态,完成三次握手,随后 客户端 与 服务端 之间可以开始传输数据了。
    一个完整的三次握手也就是请求—应答—再次确认

TCP/IP 四次挥手
为什么要挥手,简单点来说就是既然建立了链接,那么肯定还要断开连接吖,连接总不能一直占用吧,这样多浪费系统该资源,下面让我们来看看四次挥手的流程。
第一次挥手: 客户端 发送一个 FIN,用来关闭 客户端 到 服务端 的数据传送,客户端 进入 FIN_WAIT_1 状态。
第二次挥手: 服务端 收到 FIN 后,发送一个 ACK 给 客户端,确认序号为 ACK=100+1(与 SYN 相同,一个 FIN 占用一个序号),服务端 进入 CLOSE_WAIT 状态。
第三次挥手: 服务端 发送一个 FIN,用来关闭 服务端 到 客户端 的数据传送,服务端 进入 LAST_ACK 状态。
第四次挥手: 客户端 收到 FIN 后,客户端 进入 TIME_WAIT 状态,接着发送一个 ACK 给 服务端,确认序号为 131+1,服务端 进入 CLOSED 状态,完成四次挥手。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值