IT技术求职准备:网络知识总结

 

i_Fredric:


本文主要介绍了网络相关的五方面内容,分别是网络分层、IP地址分类、DNS域名解析过程、TCP协议状态机和TCP拥塞控制,都是我总结的比较基础的网络知识

网络分层

网络分层有几种不同的模型,最熟悉的是OSI模型,它将网络分为以下七层框架(自底向上):

1. 物理层

       主要功能是:利用传输介质为数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输;

       它直接面向实际承担数据传输的物理媒体(即通信通道),物理层的传输单位为比特(bit),即一个二进制位(“0”或“1”)。我们熟悉的集线器(HUP)属于物理层的实现。

2. 数据链路层

        主要功能是:在物理层提供的服务基础上,在通信的实体间建立数据链路连接,传输以“帧”为单位的数据包,并采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据链路;

       它包括了差错检测和纠错技术等,我们熟悉的MAC地址、ARP(地址解析)协议、DHCP(动态主机配置)协议等属于这一层,同时交换机属于数据链路层的实现。

3. 网络层

       主要功能是:为数据在结点之间传输创建逻辑链路,通过路由选择算法为分组通过通信子网选择最适当的路径,以及实现拥塞控制、网络互联等功能。

       路由器属于网络层的实现,网络层的协议有IP,ICMP,RIP,OSPF,BGP,IGMP等。

4. 传输层

       主要功能是:向用户提供可靠的端到端(End-to-End)服务,处理数据包错误、数据包次序,以及其他一些关键传输问题。

       传输层是分层框架中最重要的一层,主要的协议是TCP协议和UDP协议,TCP协议在下文还会详细介绍。

5. 会话层

       主要功能是:负责维护两个结点之间的传输链接,以便确保点到点传输不中断,以及管理数据交换等功能。

6. 表示层

       主要功能是:用于处理在两个通信系统中交换信息的表示方式,主要包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。

7. 应用层

       主要功能是:为应用软件提供了很多服务,例如文件服务器、数据库服务、电子邮件与其他网络软件服务;

       应用层的协议一般都有一定了解,包括HTTP,FTP,SMTP,Telent等,分别对应具体的网络服务。

下面是一张OSI分层模型的协议图:

TCP/IP参考模型:

       TCP/IP模型其实包含了一系列构成互联网基础的网络协议(TCP、UDP、IPv4、IPv6、ARP、SCTP等),它将网络分为以下四层(自底向上):

1. 网络接口层:对应于OSI模型的物理层和数据链路层;

2. 网络互联层:对应于OSI模型的网络层;

3. 传输层:对应于OSI模型的传输层;

4. 应用层:对应于OSI模型的应用层、会话层和表达层。

IP地址分类

       IP地址包括两个标识码,分别是网络ID和主机ID,IP地址分类即根据这两个ID进行分类:

1. A类IP地址

       第一段为网络ID(8位),后三段为主机ID(24位),网络地址最高位必须为”0“,所以A类地址的范围从1.0.0.1 - 126.255.255.255(00000001 00000000 00000000 00000001 - 01111111 11111111 11111111 11111111),最大网络数为126,最大主机数为16777214。

2. B类IP地址

       前两段为网络ID(16位),后两段为主机ID(16位),网络地址最高位必须为”10“,所以B类地址的范围从128.1.0.1 - 191.255.255.255(10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111111),最大网络数为16382,最大主机数为65534。

3. C类IP地址

       前三段为网络ID(24位),后一段为主机ID(8位),网络地址最高位必须为”110“,所以C类地址的范围从192.0.1.1 - 223.255.255.255(11000000 00000000 0000001 00000001 - 11011111 11111111 11111111 11111111),最大网络数为2097150,最大主机数为254。

4. 特殊的网址

       ”1110“开始的地址是多播地址,即范围从224.0.0.1 - 239.255.255.254是多播地址;

       0.0.0.0对应于当前主机;255.255.255.255是当前子网的广播地址;

       不能以”127“开头,其中127.0.0.1代表本机IP,其它用于回路测试。

5. 私有IP地址

       A类:10.0.0.0 - 10.255.255.255;B类:172.16.0.0 - 172.31.255.255; C类:192.168.0.0 - 192.168.255.255。

DNS域名解析过程

1. 客户机提出DNS请求,并将该请求发送给本地的域名服务器;

2. 当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回;

3. 如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址;

4. 本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址;

5. 重复第四步,直到找到正确的纪录;

6. 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

TCP协议状态机

Server端和Client端初试状态都为CLOSED。

Server端:

       1. LISTEN:被动打开,服务器端状态变为LISTEN(监听);

       2. SYN RCVD:服务器端收到SYN后,状态变为SYN RCVD;发送SYN和ACK;

       3. ESTABLISHED:SYN RCVD收到ACK后,状态变为ESTABLISHED;

       4. CLOSE_WAIT:Server端在收到FIN后,发送ACK,状态变为CLOSE_WAIT,如果此时Server端还有数据需要发送,那么就发送,直到数据发送完毕;

       5. LAST ACK:Server端在CLOSE_WAIT状态并发送完数据后,发送FIN,状态变为LAST_ACK;

Client端:

       1. SYN SEND:Client发送SYN后,状态变为SYN_SENT;

       2. ESTABLISHED:SYN_SENT在收到SYN ACK,状态变为ESTABLISHED,发送ACK;

       3. FIN WAIT 1:Client发送FIN,准备断开TCP连接;状态从ESTABLISHED变为FIN_WAIT_1;

       4. FIN_WAIT_2:Client只收到Server端的ACK信号,并没有收到FIN信号;说明服务器端还有数据传输,那么此时为半连接;

       5. TIME_WAIT:两种方式进入 该状态:(1)FIN_WAIT_1进入:此时应Client收到FIN+ACK(而不是像FIN_WAIT_2那样只收到ACK,说明数据已经发送完毕)并 向服务器端口发送ACK;2、FIN_WAIT_2进入:此时Client收到了FIN,然后向服务器端发送ACK;TIME_WAIT是为了实现TCP 全双工连接的可靠性关闭,用来重发可能丢失的ACK报文;需要持续2个MSL(最大报文生存时间):假设应用程序端口在进入TIME_WAIT后,2个 MSL时间内并没有收到FIN,说明应用程序最后发出的ACK已经收到了;否则,会在2个MSL内在此收到ACK报文。

Server端和Client端最后又变为CLOSED状态!

问题:为什么建立连接是三次握手,关闭连接却是四次握手?

       因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在 一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以 未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报 文和FIN报文多数情况下都是分开发送的。

TCP协议的拥塞控制

TCP协议的拥塞算法总结起来就是加性增,乘性减,慢启动!下面看一张图

如图所示,首先是慢启动,单位时间只发一个包,然后按指数规律增长(单位时间发2、4、8、16),到达阈值后,变为加性增,直到遇到网络拥塞,阈值变为拥塞窗口的一半(如从24变为12)。

网络拥塞分为两种情况:(1)检测到丢包事件,如图,重新变为慢启动(从发一个包开始),阈值变为原拥塞窗口的一半,重复原来的过程;(2)收到3个冗余ACK,图中没画出来,应该是从新阈值大小开始发包(如一次发12个包),加性增大,直到遇到下一次网络拥塞。

--------------------------------分割线----------------------------------

作者:Fredric        感谢面试突击小分队童鞋们的讨论,大家一起加油!

相关博文:

互联网业界周报(8.20-8.26)

IT技术求职准备:9种排序算法总结 

欢迎关注我的微薄:http://weibo.com/fredric

posted @ 2012-12-30 23:37  youngLaker  阅读(190)  评论(0编辑  收藏  举报