计算机网络面经积累

计算机网络

计算机网络是相互连接的独立自主的计算机的集合,最简单的网络形式是由两台计算机组成

IP地址

IP网络中每台主机都必须有一个唯一的IP地址
IP地址是一个逻辑地址
因特网上的IP地址具有全球唯一性
表现为32位,4个字节,常用点分十进制的格式表示,eg.192.168.1.1

协议

为网络中的数据交换(通信)建立的规则/标准
网络不同层具有各自不同的协议

网络体系结构

解决异质性问题采用的是分层方法——把复杂的网络互连问题划分为若干个较小的单一问题,在不同层上予以解决

OSI分层功能TCP/IP分层协议
最顶层应用层处理网络应用应用层FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
表示层对数据进行翻译、加密和压缩(表示协议数据单元PPDU)数据表示JPEG、MPEG、ASII
会话层主机间通信(会话协议数据单元SPDU)NFS、SQL、NETBIOS、RPC
传输层提供端到端的可靠报文传递和错误恢复(段Segment)传输层TCP、UDP、SPX
网络层(路由器)负责数据包从源到宿的传递和网际互连(包Packet网络层IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP
数据链路层(网桥,交换机)将比特组装成帧和点到点的传递(帧Frame)介质访问/接入网络接口PPP、FR、HDLC、VLAN、MAC
最底层物理层(中继器,集线器,网关)通过媒介传输比特,确定机械及电气规范(比特)二进制传输RJ45、CLOCK、IEEE802.3

通信实体对等层次间不允许直接通信 对等层通信实质:1.对等层实体间虚拟通信;2.上层使用下层提供的服务,下层向上层提供服务,实际通信在最底层完成
各层之间是严格单向依赖

TCP/IP体系结构与特点

在这里插入图片描述

IP(Internet Protocal)网间协议,负责主机间数据的路由和网络上数据的存储,同时为ICMP,TCP,UDP提供分组发送服务,用户进程通常不需要涉及这一层
TCP传送控制协议, 提供给用户进程的可靠的全双工字节流面向连接的协议,为用户进程提供虚电路服务,并为数据可靠传输建立检查
UDP用户数据报协议, 提供给用户进程的无连接协议,用于传送数据而不执行正确性检查
ARP地址解析协议,将网络地址映射到硬件地址; RARP反向地址解析协议, 将硬件地址映射到网络地址
ICMP网间报文控制协议,处理信关和主机的差错和传送控制
FTP文件传输协议, 允许用户以文件操作的方式与另一台主机相互通信
SMTP简单邮件传动协议,为系统之间传送电子邮件
TELNET终端协议, 允许用户以虚终端方式远程访问主机
HTTP超文本传输协议
TFTP简单文件传输协议

C/S模式

该模式的建立基于以下两点:

  1. 非对等作用.(各种运算能力,资源不均等需要共享, 资源少的用户请求服务)
  2. 网间进程通信完全是异步的(需要一种机制(C/S)给他们建立联系)

模式实现

  • 客户机/服务器模式在操作过程中采取的是主动请求方式

首先服务器要先启动,并根据请求提供相应的服务

服务器客户端
①打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收客户请求①打开一个通信通道,并连接到服务器所在主机的特定端口
②等待客户请求到达端口②向服务器发送服务请求报文,等待并接收应答
③接收到重复服务请求,处理该请求并发送应答信号③请求结束后关闭通信通道并终止
④返回第②步,等待另一客户请求-----
⑤关闭服务器-----

网络通信相关的问题

socket套接字

socket的引入是为了解决不同电脑进程间通信的问题

socket与进程的关系

socket 用于进程间通信(IPC)以及不同计算机联网通信,而socket接口是TCP/IP网络的API接口函数。

socket与文件的关系(如何理解socket是一种特殊的I/O)

  • socket最先用于Unix系统的I/O,socket数据传输就是一种特殊的I/O
  • 可对其进行文件操作
  • 有文件描述符

服务器端口和连接个数的关系

一个线程对应一个socket,socket可以生成多个但是服务器监听客户端的端口号不变,同一时间一个端口只能建立一个连接,但是在监听端口的时候,每个来自客户端的连接都会送到等待队列,即一个端口监听多个请求。
网络I/O数和CPU数目一致将是比较好的情况(考虑到多线程多进程可以提高效率),没必要为每个客户分配一个端口。
eg. QQ的消息实现,在登陆的时候告诉服务器你已经登陆,发送消息的时候,首先你会发送一个包给服务器,服务器查看你需要发送的对方是否在线,如果在线就返回包告诉你对方在线,然后你就会和对方建立一个连接,然后直接发消息给对方,如果对方不在线,那么就会通过服务器转发你这次的消息

socket监听的一个端口最多可以有几个客户连接

  • linux2.4下,最多可以有1024个socket连接
  • 同时连接请求好像是5个(是连接请求,不是连接),可保持的链接理论上是65535(2字节的SOCKET端口号
  • listen()中有个参数,应该是确定并行连接客户数?!

server与client想建立socket连接,server仅知道client的IP,端口号不知道,能建立连接吗?怎么建立呢?有没有代码看看?

😳

路由器,交换机/网桥,网关

  • 路由器(Router)
    提供路由和转送两种重要机制
    路由, 决定数据包从来源端到目的端所经过的路由路径(主机到主机)
    转送, 将路由器输入端的数据包移送至适当的路由器输出端(路由器内部)
    两个作用: ①连通不同的网络②选择信息传送的线路

  • 交换机
    在计算机网络系统中,交换机是针对共享工作模式的弱点提出来的,工作于第二层(数据链路层)
    交换机内部的CPU会在每个端口成功连接时通过ARP协议学习它的MAC地址,保存一张ARP表,在今后的通讯中发往该MAC地址的数据包将仅送往其对应的端口而不是所有的端口
    因此交换机可用于划分数据链路层广播(冲突域),而不能划分网络层广播(广播域)

  • 网关(GateWay)
    在传统TCP/IP术语中,网络设备只分成两种,一种为网关(gateway),另一种为主机(host),网关能在网络间转递数据包,但主机不能转送数据包。在主机(又称终端系统,end system)中,数据包需经过TCP/IP四层协议处理,但是在网关(又称中介系统,intermediate system)只需要到达网际层(Internet layer),决定路径之后就可以转送。
    网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据,相当于传统所说的IP网关(IP gateway)。
    eg 语音网关

连接PSTN网络和以太网,相当于VOIP, 把不同电话中的模拟信号通过网关转换成数字信号,加入协议后进行传输, 在到了接收端的时候再通过网关还原成模拟的电话信号,然后才能在电话上听到

和路由一样, 以太网中的网关只能转发三层以上数据包,不同的是网关中并没有路由表,他只能按照预先设定的不同网段来进行转发。网关最重要的一点就是端口映射,子网内用户在外网看来只是外网的IP地址对应着不同的端口,这样看来就会保护子网内的用户。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。

TCP三次握手(建立连接)和四次挥手(断开连接)全过程

三次握手:
第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

  • 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。

四次挥手(SYN换FIN)
与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。
第一次挥手:主动关闭方发送一个FIN包,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了,此时主动关闭方还可以接受数据。(在FIN包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据)
第二次挥手:被动关闭方收到FIN包后,发送一个ACK包给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN包,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
3639381到底是谁的QQ呀
eg.在浏览器中输入www.baidu.com后执行的全部过程

1、客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
4、包通过客户端的链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。

TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

答:建立连接的过程是利用客户/服务器模式,假设主机A为客户端,主机B为服务器端。
(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。
(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。 失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。

考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

http和https的区别

1、HTTP 是超文本传输协议,明文传输信息,HTTPS 则是具有安全性的 SSL 加密传输协议。
2、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)
3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

TCP和ICP的区别

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报
TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

DNS域名系统,简单描述其工作原理。

当DNS客户机需要在程序中使用名称时,它会查询DNS服务器(应用层)来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。

面向连接和非面向连接的服务的特点是什么?

面向连接的服务,通信双方在进行通信之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。
非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很高兴回答你关于计算机网络原理的问题!以下是一些常见的面试问题和面试经验,希望能帮助到你: 1. OSI七层模型和TCP/IP四层模型的区别是什么? - OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 - TCP/IP四层模型:网络接口层、网络层、传输层、应用层。 主要的区别在于OSI模型将会话层、表示层分开,而TCP/IP模型将其合并到应用层。 2. TCP和UDP的区别是什么? - TCP(传输控制协议):面向连接、可靠的传输协议,适用于需要可靠传输的场景,如文件传输。 - UDP(用户数据报协议):无连接、不可靠的传输协议,适用于实时性要求较高的场景,如音视频传输。 3. 网络中的IP地址和MAC地址有什么区别? - IP地址:用于标识网络中的设备,通过IP地址可以实现不同网络之间的通信。 - MAC地址:用于标识网络中的网卡,是物理地址,用于在本地局域网内进行通信。 4. 什么是DNS? - DNS(域名系统):将域名转换为IP地址的系统,用于通过域名访问互联网资源。 5. 什么是HTTP和HTTPS? - HTTP(超文本传输协议):用于在客户端和服务器之间传输超文本的协议。 - HTTPS(安全超文本传输协议):在HTTP基础上加入了SSL/TLS加密层,提供了安全的通信机制。 这些是一些常见的计算机网络原理面试问题,希望能对你有所帮助!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值