(欧) 第18章 计算机网络及分布式系统

网络结构

OSI参考模型中,物理层的作用:透明的传输比特流对等实体在一次交互作用中传送的信息单位协议数据单元,包括 控制信息和用户数据。上下层实体之间的接口称为服务访问点SAP,网络层的服务访问点称为IP网络地址,通常分为网络号和主机地址两部分。


OSI模型与TCP/IP参考模型

物理层:涉及在信道上的传输的原始比特流比特流。

数据链路层:主要任务是加强物理层传输原始比特流的功能,使之对应的网络层显现为一条无错线路。发送包把输入数据封装在数据帧中,按顺序传送出去并处理接收方回送的确认帧。数据帧。

网络层:关系到子网的运行控制,其中一个关键问题是确认从源端到目的端如何选择路由。数据包。

传输层:基本功能是从会话层接收数据而且把其分成较小的单元传递给网络层。段。

会话层:允许不同机器上的用户建立会话关系。

表示层:用来完成某些特定功能。

应用层:包含大量人们普遍需要的协议。数据。



第四章 基于TCP的服务器端/客户端(1)

第五章 基于TCP的服务器端/客户端(2)

第六章 基于UDP的服务器端/客户端

TCP和UDP区别:

TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发、丢弃重复数据、检验数据、流量控制等功能,保证数据能从一端传到另一端。

UDP是用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,只是把应用程序传递给IP层的数据报发送出去,但是并不保证它们能达到目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发机制,故而传输速度快



网络协议

1 如果把一个网络40.15.0.0分为两个子网,第一个子网是40.15.0.0/17,那么第二个子网将会是:40.15.128.0/17.

分析:让主网分为两个网段,子网掩码分别是0xff 0xff 0x80 0x00和0xff 0xff 0x00 0x00.

子网掩码

子网掩码和IP地址

TCP/IP协议


2 若一个蠕虫病毒攻击了一个家用PC的A类地址主机的话,这个地址最有可能接收很多:C

A 、HTTP回应包 B、 DNS回应包C、ICMP目的无法抵达包 D 、ARP回应

分析:大量发出IP请求,肯定很多不可达,返回不可达错误。

ICMP协议剖析

ICMP


3 在一个IP数据包到达目的的地址之前,可能成为碎片,而且不会重组。

分析:网络问题,数据包未到达终点前不可能重组,但可以分散成碎片。


4 在TCP/IP协议栈里,如果出现阻塞情况,下面哪种情况最可能发生?C

A 、连接错误 B、释放缓存C、丢包 D、包错误

分析:网络阻塞问题,拥塞导致丢包。


5 如果TCP服务器在客户端发出数据报之前就已经崩溃,TCP/IP栈可能返回一个?C

A 、RST B、FINC、SYN D、ACK

分析:SYN包是TCP连接的第一个包,是非常小的数据包。SYN攻击包括大量此类的包。由于这些包看上去来自实际不存在的站点,因此无法有效进行处理SYN攻击就是利用TCP连接的3次握手机制,但发起攻击端只来一两次握手,而被攻击端一直在试图完成TCP连接,因此造成资源不足


6 如何编写Socket套接字

分析:Socket相当于进行网络通信两端的插座,只有对方的Socket和之间的Socket有通信连接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。

若要编写服务程序,先调用socket()创建一个套接字,调用bind()函数绑定IP地址和端口,然后启动一个死循环,循环中调用accept()接受的连接。对于每个接受的连接,可以启动多线程方式进行处理,在线程中调用send()、recv()发送和接收数据。

若编写客户端程序,先调用socket()创建一个套接字,然后调用connect()连接服务器,之后就是调用send()、recv()发送和接收数据。


答案:

服务器端程序:

(1)调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上。

(2)调用accept(),监听连接请求,则接收连接,返回通信套接字。

(3)调用Socket类的getOutStream()和getInputStream()获取输出流和输入流,开始网络数据的发送和接收。

(4)关闭通信套接字Socket.close()。


客户端程序

(1)调用Socket()创建一个流套接字,并连接到服务器端。

(2)调用Socket类的getOutStream()和getInputStream()获取输出流和输入流,开始网络数据的发送和接收。

(3)关闭通信套接字Socket.close()。


7 与10.110.12.29 Mask 255.255.255.244属于同一网段的主机IP地址是哪个?B

A、10.110.12.0 B、10.110.12.30C、10.110.12.31 D、10.110.12.32 

分析:10.110.12.0~10.110.12.31,网络号是0,广播地址是31,可用地址1~30.


网络安全问题

防火墙VS. 入侵检测

防火墙优点:增强几个内部网络的安全性,用于加强网络间的访问控制,防止外部用户非法使用内部网的资源,保护内部网络的设备不被破坏,防止内部网络的敏感数据被窃取。

防火墙缺点:对于发生在内网的攻击无能为力;对于部分攻击,可以绕过防火墙,防火墙发现不了;防火墙的策略是静态的,不能实施动态防御。


入侵检测的优势:入侵检测系统扫描当前网络活动,监视和记录网络的流量,根据定义好的规则来过滤从主机网卡到网线上的流量,提供实时报警。大多数的入侵检测系统可以提供关于网络流量非常详尽的分析。这种规则有助于追查该连接和确定网络上发生过什么,以及现在正在发生什么。

入侵检测的缺点:方法主要停留在异常检测统计方法和误用检测方法上,这两种方法都还存在这样或那样的问题。


25端口是做什么的?有什么漏洞?

分析:25端口为SMTP(简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。如在使用电子邮件客户端程序的时候,在创建账户时会要求输入SMTP服务器地址,该服务器地址默认情况下使用的是25端口。

端口漏洞:利用25端口,黑客可以寻找SMTP服务器,用来转发垃圾邮件。25端口被很多木马程序开放。通过25端口,可以监视计算机正在运行的所有窗口和模块。



补充:

端口,一是物理意义上的端口,如ADSL MODEM、集线器、交换机、路由器用于连接其他网络设备的接口。二是逻辑意义上的接口,一般是指TCP/IP协议中的端口,端口号范围为0~65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口。


逻辑意义的端口分类:

1)按端口号分布划分

(1)知名端口,范围是0~1023,这些端口一般固定分配给一些服务。

(2)动态端口,范围是1024~65535,不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。

  注意:动态端口也常被病毒木马所利用,冰河默认端口是7626,WAY 2.4利用8011,Netspy 3.0是7036,YAI利用1024.

2)按协议类型划分

按协议类型划分,可以分为TCP、UDP、IP、ICMP(因特尔控制消息协议)。

(1)TCP端口,需要在客户端和服务器之间建立连接,这样可以提高可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口。

(2)UDP端口,无需再客户端和服务器之间建立连接,安全性得不到保障。常见的DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口。


网络其他问题

普通U盘写数据约为6MB/s,即48Mbps;100M以太网的速率就是100Mbps。MP3在256kbps码率下的也平均只有1分钟2MB,所以约为0.3Mbps。


网络中常见的ping命令是什么协议?

分析:ICMP是“Internet Control Message Protocol” (Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要作用。


网络中常使用ICMP协议,只是没有感觉得到。比如常使用的用于检测网络通不通的ping命令,这个ping的过程实际上就是ICMP协议工作的过程。如跟踪路由的Tracert命令也是基于ICMP协议的。


ICMP协议本身的特定决定了它非常容易被用于攻击网络上的路由器和主机。

比如,可以利用操作系统规定的ICMP数据包最短尺寸不超过64KB这规定,向主机发起“ping of death”攻击。 其原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,使主机死机。

此外,向主机长时间、连续、大量发送ICMP数据包,会最终使系统瘫痪。大量的ICMP数据包会形成ICMP风暴,使得目标主机耗费大量的CPU资源处理。


答案:ping.exe的原理是,向指定的IP地址发送一定长度的数据包,按照约定,若指定IP地址存在的话,会返回同样大小的数据包,若在特定时间内没有返回,就是超时,就认为指定的IP地址不存在。由于ping使用ICMP协议,有些防火墙软件会屏蔽ICMP协议,所以有时候ping的结果只能作为参考,ping不通并不一定说明对方IP不存在


防止ping的方法有防火墙,或者创建一个禁用所有计算机ping本机IP地址的安全策略。有些防火墙软件会屏蔽掉ICMP协议。

IPSec安全策略是如何防ping的?其原理是通过新创建一个IPSec策略过滤本机所有的ICMP数据包。但是也会留下后遗症,因为ping和ICMP紧密相连,在ICMP协议的应用中包含11种报文格式,其中ping命令就是利用ICMP协议中的“Echo Request”报文进行工作的。但是IPSec安全策略防ping时采用格杀勿论的方法,把所有的ICMP报文全部过滤。



TCP3次握手和4次握手

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


未连接队列:在3次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除这条目,服务器进入ESTABLISHED状态。

Backlog参数:表示未连接队列的最大容纳数目。

SYB-ACK重转次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重转,等待一段时间仍未收到客户确认包,进行第二次重转,如果重转次数超过系统规定的最大重转次数,系统就将该连接信息从半连接队列中删除。 注意,每次重转等待时间不一定相同。

半连接存活时间:是指半连接队列的条目存活的最长时间,即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重转请求包的最长等待时间总和。也称半连接存活时间为Timeout时间、SYN_RECV存活时间。




《程序员面试宝典》 欧立奇 第五版 P305~314

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值