求职之计算机网络

来源:互联网 发布:西安交大大数据学院 编辑:程序博客网 时间:2024/05/16 01:20

1.计算机网络面试常考

OSI,TCP/IP,五层协议的体系结构,以及各层协议

OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
五层协议     (5层):物理层、数据链路层、网络层、运输层、 应用层。
每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3    (中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC  (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
每一层的作用如下:

物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)

数据链路层:将比特组装成帧和点到点的传递(帧Frame)

网络层:负责数据包从源到宿的传递和网际互连(包PackeT)

传输层:提供端到端的可靠报文传递和错误恢复(段Segment)

会话层:建立、管理和终止会话(会话协议数据单元SPDU)

表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

IP地址的分类

A类地址:以0开头, 第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);

B类地址:以10开头,    第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);

C类地址:以110开头,  第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);

10.0.0.0—10.255.255.255, 172.16.0.0—172.31.255.255, 192.168.0.0—192.168.255.255。(Internet上保留地址用于内部)

IP地址与子网掩码相与得到主机号

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响应。

各种协议

ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

DHCP协议: 动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。

NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,

DHCP协议:一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。


描述:RARP

RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。


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 连接都将被一直保持下去。

四次握手

与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。


在浏览器中输入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和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(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

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

当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到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的资源浪费。

(3)采用两次握手不行,原因就是上面说的实效的连接请求的特殊情况。

端口及对应的服务?

服务

端口号

服务

端口号

FTP

21

SSH

22

telnet

23

SMTP

25

Domain(域名服务器)

53

HTTP

80

POP3

110

NTP(网络时间协议)

123

MySQL数据库服务

3306

Shell或 cmd

514

POP-2

109

SQL Server

1433

IP数据包的格式

IP数据报由首部 和数据  两部分组成。首部由固定部分和可选部分  组成。首部的固定部分有 20 字节。可选部分的长度变化范围为1——40字节。固定部分的字段:

字段名

位数(bit)

字段名

位数

版本

4  Ipv4

首部长度

4(表示的最大数为15个单位,一个单位表示4字节)

服务类型

8  以前很少用

总长度

16 (首部和数据部分的总长度,因此数据报的最大长度为65535字节,即64KB,但是由于链路层的MAC都有一定的最大传输单元,因此IP数据报的长度一般都不会有理论上的那么大,如果超出了MAC的最大单元就会进行分片)

标识

16 (相同的标识使得分片后的数据报片能正确的重装成原来的数据报)

标志

3 (最低位MF=1表示后面还有分片,MF=0表示这是若干个数据报片的最后一个中间位DF=0才允许分片)

片偏移

片偏移指出较长的分组在分片后,某片在原分组中的相对位置,都是8字节的偏移位置

生存时间

数据报在网络中的生存时间,指最多经过路由器的跳数

协议

8 (指出该数据报携带的数据是何种协议,以使得目的主机的IP层知道应将数据部分上交给哪个处理程序)如ICMP=1 IGMP=2 TCP=6 EGP=8 IGP=9 UDP=17 Ipv6=41 OSPF=89

首部校验和

这个部分只校验首部,不包括数据部分,计算方法:将首部划分为多个16位的部分,然后每个16位部分取反,然后计算和,再将和取反放到首部校验和。接收方收到后按同样的方法划分,取反,求和,在取反,如果结果为零,则接收,否则就丢弃

源地址

32

目的地址

32

TCP数据报的格式?

一个TCP报文段分为首部和数据两部分。首部由固定部分和选项部分组成,固定部分是20字节。TCP首部的最大长度为60。首部固定部分字段:

字段名

字节(Byte)

字段名

字节(Byte)

源端口

2

目的端口

2

序号

4

确认号

4,是期望收到对方的下一个报文段的数据的第一个字节的序号

数据偏移

4bit 指出TCP报文段的数据起始处距离TCP报文段的起始有多远

保留

6bit

紧急比特URG

 

确认比特ACK

只有当ACK=1时,确认号字段才有效

推送比特PSH

 

复位比特RST

 

同步比特SYN

 

终止比特FIN

 

窗口

2

检验和

2 (包括首部和数据两部分,同时还要加12字节的伪首部进行校验和计算)

选项

长度可变(范围1——40)

  


TCP的12字节伪首部:

源IP地址(4)

目的IP地址(4)

0 (1)

6(1) 代表这是TCP,IP协议中提到过

TCP长度(2)

TCP数据报的格式?

用户数据报UDP由首部和数据部分组成。首部只有8个字节,由4个字段组成,每个字段都是两个字节。


字段名

字节

字段名

字节

源端口

2

目的端口

2

长度

2

检验和

2 (检验首部和数据,加12字节的伪首部)



UDP的12字节伪首部:

源IP地址(4)

目的IP地址(4)

0 (1)

17(1) 代表这是UDP

UDP长度(2)

以太网MAC帧格式?

前导码前定界符目的地址源目的地址长度字段数据字段校验字段7B1B6B6B2B46-15004B


了解交换机、路由器、网关的概念,并知道各自的用途

1)交换机

在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背 部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部 交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表 中。

交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张 ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不 能划分网络层广播,即广播域。

交换机被广泛应用于二层网络交换,俗称“二层交换机”。

交换机的种类有:二层交换机、三层交换机、四层交换机、七层交换机分别工作在OSI七层模型中的第二层、第三层、第四层盒第七层,并因此而得名。

2)路由器

路由器Router)是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过 的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转 送。路由工作在OSI模型的第三层——即网络层,例如网际协议。

路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。 路由器与交换器的差别,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。

3)网关

网关(Gateway),网关顾名思义就是连接两个网络的设备,区别于路由器(由于历史的原因,许多有关TCP/IP 的文献曾经把网络层使用的路由器(Router)称为网关,在今天很多局域网采用都是路由来接入网络,因此现在通常指的网关就是路由器的IP),经常在家 庭中或者小型企业网络中使用,用于连接局域网和Internet。 网关也经常指把一种协议转成另一种协议的设备,比如语音网关。

在传统TCP/IP术语中,网络设备只分成两种,一种为网关(gateway),另一种为主机(host)。网关能在网络间转递数据包,但主机不能 转送数据包。在主机(又称终端系统,end system)中,数据包需经过TCP/IP四层协议处理,但是在网关(又称中介系 统,intermediate system)只需要到达网际层(Internet layer),决定路径之后就可以转送。在当时,网关 (gateway)与路由器(router)还没有区别。

在现代网络术语中,网关(gateway)与路由器(router)的定义不同。网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据,相当于传统所说的IP网关(IP gateway)。

网关是连接两个网络的设备,对于语音网关来说,他可以连接PSTN网络和以太网,这就相当于VOIP,把不同电话中的模拟信号通过网关而转换成数字信号,而且加入协议再去传输。在到了接收端的时候再通过网关还原成模拟的电话信号,最后才能在电话机上听到。

对于以太网中的网关只能转发三层以上数据包,这一点和路由是一样的。而不同的是网关中并没有路由表,他只能按照预先设定的不同网段来进行转发。网关最重要的一点就是端口映射,子网内用户在外网看来只是外网的IP地址对应着不同的端口,这样看来就会保护子网内的用户。

2.三次握手,四次挥手

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。 
(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。 
(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。 
(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。 
完成三次握手,客户端与服务器开始传送数据。

图1 TCP三次握手建立连接 
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。 
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。 
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。 
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。 
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。 
TCP采用四次挥手关闭连接如图2所示。

图2  TCP四次挥手关闭连接 
1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢? 
这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。 
2.为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态? 
这是因为虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到 ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于 LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的 ACK报文

TCP三次握手及四次挥手详细图解

相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助.


而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。


因此在这里详细解释一下这两个过程。


TCP三次握手


所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。


第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

SYN攻击

在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.

Syn攻击就是 攻击客户端 在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

Syn攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被

Syn攻击

netstat -n -p TCP | grep SYN_RECV

一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.

但是不能完全防范syn攻击。

TCP 四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

参见wireshark抓包,实测的抓包结果并没有严格按挥手时序。我估计是时间间隔太短造成。

3.IP数据包重组与分片

分片:有网路层的路由器完成。
当IP数据包封装成帧时,若长度超过下层的数据链路层的MTU值(最大传输单元)就无法传输,需要分片。

重组:由最终目的主机对分片进行重组。

4.SYN泛洪

攻击者伪造大量源IP地址向服务器发起连接请求,然后挂起在办理按揭状态,以此占用服务器的大量资源,导致拒接服务。


5.TCP Land 攻击

发送的攻击报文源IP地址与目的IP地址相同,都为目标主机IP地址。导致目标主机想自己发送SYN-ACK信息,然后又发送ACK消息,并创建一个空连接。-----》通常导致存在漏洞的机器崩溃。

6.牛客网刷题总结

1.socket工作过程
服务器需要绑定(bind)监听(listen)端口,等待客户端连接(accept)
connect用于向服务端发出连接请求,属于客户端。
bind用于将套接字与服务器的网络地址联系在一起,listen用于启动监听套接字,进入监听状态,accept用于接受客户端的连接请求

2.IPV6地址
IPV6地址有128位二进制数组成。每四个二进制数组成一个十六进制数,有128/4=32个十六进制数
每四个十六进制数为一组,中间用冒号隔开。如XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
如果XXXX四位是全零,可以省略写成::形式


3.HTTP状态码
403:forbidden  服务器易经理解请求但拒绝执行,通常由于服务器上文件或目录的权限设置导致。

301永久重定向
302暂时重定向
403我知道你要干什么就是不给你干
500内部服务器错误


4.ADSL
ADSL是非对称数字用户线路(Asymmetric Digital Subscriber Line)的缩写,亦可称作非对称数字用户环路。ADSL技术提供的上行和下行带宽不对称,因此称为非对称数字用户线路,是一种异步传输模式(ATM)。


5.TCP分节RST的情况

四种情况会发送RST包
1、端口未打开
2、请求超时
3、提前关闭
4、在一个已关闭的socket上收到数据


6.一台刚刚接入互联网的WEB服务器第一次被访问到时,不同协议的发生顺序是下面中的ARP -> DNS -> HTTP。

信息发送出去都是由低层逐层向上传递的,arp是数据链路层的协议,dns是网络层的协议、http是应用层的协议。

当给WEB服务器接上网线的时候,它会自动发送一条ARP信息,使得接入网关能找的到它。

7.负载均衡
一般第四层或第七层实现。
四层负载均衡:是通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器与请求客户端建立TCP连接,然后发送Client请求的数据。
七层负载均衡设备:也称内容交换,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的服务器。

8.BGP是在自治系统之间传播路由的协议
BGP是自治系统间的路由协议,BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策


9.表示层
表示层功能:数据的编码、翻译、压缩、解压缩、加密、解密,将数据翻译为相对应的编码格式,然后展现到应用程序中,包含JPEG 、 ASCII 、 TIFF 、 GIF 、 PICT 、加密、 MPEG 、 MIDI。


10.HTTP
     1.HTTP是超文本传输协议不是二进制协议。
     2.HTTP是基于TCP协议之上的应用层协议
     3.HTTP协议的ETAG响应头主要用于信息的过期验证


11.RIP
RIP协议是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递。这种协议的路由器,只与自己相邻的路由器交换信息,范围限制在15跳(15度)之内。


12.HTTP会话的四个过程
1. 建立tcp连接
2. 发出请求文档
3. 发出响应文档
4. 释放tcp连接

HTTP1.0和 HTTP1.1 的区别
在HTTP1.0 协议中,客户端与 web 服务器建立连接后,只能获得一个 web 资源。
HTTP1.1协议,允许客户端与 web 服务器建立连接后,在一个连接上获取多个 web 资源。

不管POSTGET ,都用于向服务器请求某个 WEB 资源,这两种方式的区别主要表现在数据传递上:
如请求方式为GET 方式,则可以在请求的 URL 地址后以 ? 的形式带上交给服务器的数据,多个数据之间以 & 进行分隔,例如:
GET /mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特点:在 URL 地址后附带的参数是有限制的,其数据容量通常不能超过 1K 。
如请求方式为POST 方式,则可以在请求的实体内容中向服务器发送数据, Post 方式的特点:传送的数据量无限制。

13.如果主机想访问本地局域网外的某一网络,需要做两件事:
1、设置本机的默认网关 。
2、本地局域网默认网关上需要设置一条路由,用以完成本地局域网内的任一主机到目标局域网主机的路由工作。


14.线程
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元
一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
另外,线程是进程中的一个实体,是被系统独立调度分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
在多线程OS中,线程是能独立 运行 的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一 进程 中的)。一个线程可以创建和撤消另一个线程,同一 进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
独立调度,独立分配,独立运行

进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。
线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者共同优点:两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。
同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

15.同源策略
同源策略(Same Origin Policy,SOP)是指浏览器请求的资源必须是同域名、同协议、同端口。不同源的客户端脚本(js,actionscript)在没有明确的授权的情况下不能读取对方的资源。
跨源资源(CrossOrigin Resources Sharing,CORS )是一种允许多种资源在一个web页面请求域之外的另一个域的资源的协议,是为了让AJAX能够跨域而生的。
内容安全策略(Content Security Policy,CSP)是一种白名单机制,限制网站中是否可以包含某来源的内容。
Oauth是一个关于授权的开放网络标准,相当于在客户端与服务器之间添加了一个授权层。


16.HTTP
1.在HTTP1.0HTTP1.1协议中都有对KeepAlive的支持。其中HTTP1.0需要在request加“Connection: keep-alive” header才能够支持,而HTTP1.1默认支持
2.当使用Keep-Alive模式时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接
3.可以在服务器端设置是否支持keep-alive

当Server多为动态请求时,尽量关闭keep-alive
1.当Server的静态资源(css 、html、js、img)较多时,打开keep-alive的开关能够显著减少建立tcp连接的 cpu时间消耗
2. 当Server的请求大多为动态请求(数据库访问或者I/O较多)时,keep-alive关闭比较好,能够节省一定 的内存,同时节省的内存可以用来作为cache,降低I/O压力


17.cookies
某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据

18.GET和 POST 
HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。
GET与POST方法有以下区别:
(1) 在客户端, Get 方式在通过 URL 提交数据,数据 在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
(2) GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
(3) 安全性问题。正如在( 1 )中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get ;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post 为好。
(4) 安全的和幂等的。所谓安全意味着该操作用于获取信息而非修改信息幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。换句话说, GET 请求一般不应产生副作用。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。 POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解)。



0 0
原创粉丝点击