常识网络

计算机基础知识——计算机网络

2018-11-06  本文已影响1060人  zuoerfeng

2018.11.06

计算机网络(TCP/IP)


(1) 建立TCP服务器的各个系统调用

建立一个TCP服务器需要涉及到以下的几个系统调用:

socket():开启一个套接字
bind():绑定IP地址和端口号,注意绑定的时候,服务器一般是要主动绑定IP地址和端口号的,但是客户端一般是不需要的,因为客户端发送连接的时候,内核会自动分配一个端口号给它。
listen():监听是否有客户端请求
accept():阻塞进程,等待客户端的接入,接入之后产生收发的另外一个套接字,注意客户端的地址和端口号是在accept接收到的参数中找到的
send():有客户端的接入之后,发送数据
receive():有客户端接入之后,接收数据
close():关闭套接字

套接字对应的连接关系图如下:


(2) 说明socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的?

除了上面网络编程的一些常见的系统调用之后,还有客户端的一些调用;

1.connect():客户端主动连接函数,调用这个函数的时候,会添加自己客户端的地址和端口号

2.select():非阻塞监控函数,这个函数非常的重要,一句话说不清楚。


client_sd即使返回的新的套接字,连接套接字,通过连接套接字进行数据的传输。但是上述这种accept()方式存在i一个很大的问题!!!!——即如果没有tcp请求会一直阻塞,而且用户无法得知,效率极低。为了解决上述的办法,引进了套接字监控宏函数。

下面直接给出一个具体的实例是如何调用的,直接给出实例是如何调用的:

上述用的4个操作宏到底有什么用,如何定义的呢??、下面进行详细的介绍:

FD_ZERO,FD_ISSET这些都是套节字结合操作宏 ,看看MSDN上的select函数, 这是在select io模型中的核心,用来管理套节字IO的,避免出现无辜锁定.

int  select(int nfds,fd_set FAR *readfds, fd_set FAR *writefds, fd_set FAR *exceptfds, const struct timeval FAR *timeout); 

第一个参数在windows下可以忽略,但在linux下必须设为最大文件描述符加1;二是结构fd_set在两个系统里定义不一样)。

所以代码中对这个位置也有特别的注意,为什么对三个套接字取了最大值:

max_sd表示正在被使用的socket类

最后的是超时标准,select是阻塞操作当然要设置超时事件. 接着的三个类型为fd_set的参数分别是用于检查套节字的可读性,可写性,和列外数据性质.

我举个例子 :比如recv(), 在没有数据到来调用它的时候,你的线程将被阻塞如果数据一直不来,你的线程就要阻塞很久.这样显然不好.所以采用select来查看套节字是否可读(也就是是否有数据读了)

步骤如下

socket   s; 
..... 
fd_set   set; 
while(1) 
{     
    FD_ZERO(&set);//将你的套节字集合清空 
    FD_SET(s,   &set);//加入你感兴趣的套节字到集合,这里是一个读数据的套节字s 
    select(0,&set,NULL,NULL,NULL);//检查套节字是否可读, 
                                                      //很多情况下就是是否有数据(注意,只是说很多情况)
                                                      //这里select是否出错没有写 
    if(FD_ISSET(s,   &set)   //检查s是否在这个集合里面, 
    {                                           //select将更新这个集合,把其中不可读的套节字去掉 
                                                //只保留符合条件的套节字在这个集合里面               
            recv(s,...); 
    } 
    //do   something   here 
}

也就是说,我们得检测我们选定的套接字中此时可不可读,如果不可读我们就将套接字刷新掉,不比一直进行阻塞等待,等中心建立新的套接字,在进行下一轮,提高之前说的阻塞效率。


  1. poll函数:类似select函数,也出管理处理多个描述符,只是管理集合的方式不太一样。

缺点:每次都需要把FD监控的描述符从用户态拷贝到内核态。

  1. shutdown: 立即关闭进程,不用考虑套接字的引用计数,close并不能,可能还会早上半关闭状态。

  2. close是一次就能直接关闭的吗,半关闭状态是怎么产生的?首先回答第一个,close并不是一次就能直接关闭,调用close只能将套接字的引用计数减1,可能其他进程还在使用这个套接字,所以并不是直接关闭

同时在TCP协议中,发送关闭请求时,需要对方回复确认请求,否则不能确认,就会造成一个办半关闭的状态,这个时候可以接收,不能发送。


(3) 对路由协议的了解与介绍。内部网关协议IGP包括RIP,OSPF,和外部网关协议EGP和BGP.

静态路由和动态路由,静态路由用于局域网,内部网络,动态路由用于大型的交换式路由

RIP:基于距离向量的路由协议,通过计算距离来选择路由的路径
OSPF:基于链路状态型的路由,给每一个路径有一个权重,并计算路径的代价最小值,选择这条路径
EGP:外部网关协议
BGP:一种常见的外部网关协议,一种矢量的路由协议,它通过维护IP路由表或‘前缀’表来实现自治系(AS)之间的可达性。


(4) TCP和UDP的区别

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付

3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP首部开销20字节;UDP的首部开销小,只有8个字节

6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道


(5) TCP和UDP相关的协议与端口号

  1. TCP对应的协议:

FTP:定义了文件传输协议,使用21端口。

Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

  1. UDP对应的协议:

DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。


(6) TCP(UDP,IP)等首部的认识(http请求报文构成)


(7) 网页解析的过程与实现方法

1. 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件。

2. 浏览器开始载入html代码,发现<head>标签内有一个<link>标签引用外部CSS文件。

3. 浏览器又发出CSS文件的请求,服务器返回这个CSS文件。

4. 浏览器继续载入html中<body>部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了。

5. 浏览器在代码中发现一个<img>标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码。

6. 服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码。

7. 浏览器发现了一个包含一行Javascript代码的<script>标签,赶快运行它

8. Javascript脚本执行了这条语句,它命令浏览器隐藏掉代码中的某个<style>(style.display=”none”)。杯具啊,突然就少了这么一个元素,浏览器不得不重新渲染这部分代码。

9. 终于等到了</html>的到来,浏览器泪流满面……

10. 等等,还没完,用户点了一下界面中的“换肤”按钮,Javascript让浏览器换了一下<link>标签的CSS路径。

11. 浏览器召集了在座的各位<div><span><ul><li>们,“大伙儿收拾收拾行李,咱得重新来过……”,浏览器向服务器请求了新的CSS文件,重新渲染页面。


(8) 在浏览器中输入URL后执行的全部过程(如www.baidu.com

1.浏览器首先通过查找内部DNS缓存,查不到依次进行系统DNS缓存,路由器缓存,DNS服务器,一步一步找到并解析IP地址。

2.给对应IP地址的服务器发送搞一个http的请求。

3.百度服务器响应请求,发送html的文档

4.浏览器响应接收到的html的文档对象,解析,并显示。


(9) 网络层分片的原因与具体实现

原因:每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU(Maximum Transmission Unit).IP协议在传输数据包时,若IP数据报加上数据帧头部后长度大于MTU,则将数据报文分为若干分片进行传输,并在目标系统中进行重组。比如说,在以太网环境中可传输最大IP报文大小(MTU)为1500字节。如果要传输的数据帧大小超过1500字节,即IP数据报长度大于1472(1500-20-8=1472,普通数据报)字节,则需要分片之后进行传输。

具体实现:TCP分段,IP分片


(10) TCP的三次握手与四次挥手的详细介绍(TCP连接建立与断开是热门问题)

http://blog.csdn.net/qzcsu/article/details/72861891


(11) TCP握手以及每一次握手客户端和服务器端处于哪个状态(11种状态)

11种状态:

1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN.

2)、SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT.

3)、SYN_RECV:服务端应发出ACK确认客户端的SYN,同时自己向客户端发送一个SYN. 之后状态置为SYN_RECV

4)、ESTABLISHED: 代表一个打开的连接,双方可以进行或已经在数据交互了。

5)、FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态.

6)、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT.

7)、FIN_WAIT2:主动关闭端接到ACK后,就进入了FIN-WAIT-2 .

8)、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK . /

9)、TIME_WAIT:在主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态。

10)、CLOSING: 这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的 ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什 么情况下会出现此种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报 文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。

11)、CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束

connect和accept发生在三次握手的哪个阶段

从这个图上看,首先客户端调用connect函数,函数进入阻塞状态,发送syn给服务器端,服务器端响应,accept请求进入阻塞状态,返回ack,syn给客户端,客户端收到,此时connect阻塞返回,connect过程结束,发生在1 2次握手,然后返回ack给服务器端,服务器端收到请求,此时accept返回,服务器收到,accept发生在1 2 3次握手。


(12) 为什么使用三次握手,两次握手可不可以?

  1. 因为保证可靠的最小传输的次数就是三次握手,A能发,B能收发,A能收,保证可靠,

  2. 两次握手显然不可以,不仅不能保证可靠传输,可能导致失效的连接请求被服务端接收,A开始请求无效,后来重发请求成功和B通信,B后来又会和失效的A连接。


(13) TIME_WAIT的意义(为什么要等于2MSL)、

保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器


(14) 超时重传机制(不太高频)

超时重传指的是,发送数据包在一定的时间周期内没有收到相应的ACK,等待一定的时间,超时之后就认为这个数据包丢失,就会重新发送。这个等待时间被称为RTO.

检测丢失segment的方法从概念上讲还是比较简单的,每一次开始发送一个TCP segment的时候,就启动重传定时器,定时器的时间一开始是一个预设的值(Linux 规定为1s),随着通讯的变化以及时间的推移,这个定时器的溢出值是不断的在变化的,有相关算法计算RTO[参考:文章....],如果在ACK收到之前,定时器到期,协议栈就会认为这个片段被丢失,重新传送数据。


(15) TCP怎么保证可靠性(面向字节流,超时重传,应答机制,滑动窗口,拥塞控制,校验等)?

1.面向字节流:以流的方式传输,缓存区满了就划分为几段进行传输
2.超时重传:发送数据包在一定的时间周期内没有收到相应的ACK,等待一定的时间,超时之后就认为这个数3.据包丢失,就会重新发送
4.应答机制:3次握手和4次挥手
5.滑动窗口:控制发送方发送窗口的大小,控制流量
6.拥塞控制:控制传输上流量
7.校验:防止数据传输过长中发生的错误


(16) 流量控制的介绍,采用滑动窗口会有什么问题(死锁可能,糊涂窗口综合征)?

主要介绍再接收端和发送端速率不匹配的状况下,TCP协议栈滑动窗口动态调整机制产生的一种问题 叫糊涂窗口综合症,

这个问题可以归结为小包的问题,就是由于发送端和接收端上的处理不一致,导致网络上产生很多的小包,之前也介绍过避免网络上产生过多小包的措施,比如Nagle算法。在滑动窗口机制下,如果发送端和接收端速率很不一致,也会产生这种比较犯傻的状态:发送方发送的数据,只要一个大大的头部,携带数据很少。

对于接收端来讲,如果接收很慢,一次接收1个字节或者几个字节,这个时候接收端 缓冲区很快就会被填满,然后窗口通告为0字节,这个时候发送端停止发送,应用程序收上去1个字节后,发出窗口通告为1字节,发送方收到通告之后,发出1个字节的数据,这样周而复始,传输效率会非常低。

同时如果发送端程序一次发送一个字节,虽然窗口足够大,但是发送仍是一个字节一个字节的传输,效率很低


(17) tcp滑动窗口协议

http://blog.csdn.net/wdscq1234/article/details/52444277

TCP的滑动窗口主要有两个作用,一是提供TCP的可靠性,二是提供TCP的流控特性。同时滑动窗口机制还体现了TCP面向字节流的设计思路。


(18) 拥塞控制和流量控制的区别

流量控制:端对端的流量快慢控制,并保证传输的可靠性

拥塞控制:全局网络的拥塞情况,如果有发生丢包则通过拥塞控制减小窗口,确定出合适(慢开始 拥塞避免 快重传 快恢复)的拥塞窗口。


(19) TCP拥塞控制,算法名字?(极其重要)

慢开始 拥塞避免 快重传 快恢复

1.慢开始:最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发生。

2.拥塞避免:从慢启动可以看到,cwnd可以很快的增长上来,从而最大程度利用网络带宽资源,但是cwnd不能一直这样无限增长下去,一定需要某个限制。TCP使用了一个叫慢启动门限(ssthresh)的变量,当cwnd超过该值后,慢启动过程结束,进入拥塞避免阶段。

3.快重传 :快速重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置重传计时器时间到期

4.快恢复:其实快速恢复并不是单独存在的,它是快速重传的后续处理。通常认为客户端接收到3个ACK后,就会开始快速重传,但是如果还有更多的重复ACK呢,这个时候就是快速恢复要做的。

a、当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半(也即cwnd=ssthresh/2).但是接下去并不执行慢开始算法;

b、考虑到此时能连续收到3个ACK,说明网络没有拥塞,执行加法原则,有几个ACK就加几个段的字节数,或者可以将cwnd=ssthresh,直接进入拥塞避免算法。

http://blog.csdn.net/gogokongyin/article/details/51287985


(20) http协议与TCP联系

  1. TCP协议对应于传输层,而HTTP协议对应于应用层

  2. TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

  3. TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP


(21) http/1.0和http/1.1的区别

  1. HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理

HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

HTTP 1.1则支持持久连接Persistent Connection, 并且默认使用persistent connection. 在同一个tcp的连接中可以传送多个HTTP请求和响应. 多个请求和响应可以重叠,多个请求和响应可以同时进行. 更加多的请求头和响应头(比如HTTP1.0没有host的字段).

  1. 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。

HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。此外,服务器应该接受以绝对路径标记的资源请求。

  1. 100(Continue) Status(节约带宽)

HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码401(Unauthorized);

  1. HTTP/1.1在1.0的基础上加入了一些cache的新特性,当缓存对象的Age超过Expire时变为stale对象,cache不需要直接抛弃stale对象,而是与源服务器进行重新激活(revalidation)

(22) http的请求方法有哪些?get和post的区别。

两种 HTTP 请求方法:GET 和 POST

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。


(23) http的状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误


(24) http和https的区别,由http升级为https需要做哪些操作

HTTPS的全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议

HTTPS和HTTP的区别:

1.https协议需要到ca申请证书,一般免费证书很少,需要交费。
2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
3.http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
4.http的连接很简单,是无状态的。 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全


(25) http中浏览器一个URL的流程,这个过程中浏览器做了什么,URL包括哪三个部分?

URL包括:服务类型,主机名,路径及文件名

1.浏览器首先通过查找内部DNS缓存,查不到依次进行系统DNS缓存,路由器缓存,DNS服务器,一步一步找到并解析IP地址。
2.给对应IP地址的服务器发送搞一个http的请求。
3.百度服务器响应请求,发送html的文档
4.浏览器响应接收到的html的文档对象,解析,并显示。


(26) 一个机器能够使用的端口号上限是多少,为什么?可以改变吗?那如果想要用的端口超过这个限制怎么办?

linux socket使用16bit无符号整型表示端口号,最大到65535,不能改变,规定了是16bit二进制数,但是可以复用,即使用同一个端口号来进行通信


(27) 对称密码和非对称密码体系

1.对称密钥密码体系

对称密钥密码体系也叫密钥密码体系,它是指消息发送方和消息接收方必须使用相同的密钥,该密钥必须保密。发送方用该密钥对待发消息进行加密,然后将消息传输至接收方,接收方再用相同的密钥对收到的消息进行解密。

2.非对称密钥密码体系又叫公钥密码体系,它使用两个密钥:一个公共密钥PK和一个私有密钥SK。这两个密钥在数学上是相关的,并且不能由公钥计算出对应的私钥,同样也不能由私钥计算出对应的公钥。


(28) 数字证书的了解(高频)

数字证书是经过权威机构(CA)认证的公钥,通过查看数字证书,可以知道该证书是由那家权威机构签发的,证书使用人的信息,使用人的公钥。它有以下特点:

1、由专门的机构签发的数字证书才安全有效。

2、签发数字证书是收费的。

3、不会被冒充,安全可信。

4、数字证书有使用期限,过了使用期限,证书变为不可用。CA也可以在试用期内,对证书进行作废操作。


(29) 客户端为什么信任第三方证书

第三方认证机构,是指具有可靠的执行认证制度的必要能力,并在认证过程中能够客观、公正、独立地从事认证活动的机构。即认证机构是独立于制造厂、销售商和使用者(消费者)的、具有独立的法人资格的第三方机构,故称认证为第三方认证认证机构。


(30) RSA加密算法,MD5原理(MD5不算加密算法)

MD5原理:MD5,全名Message Digest Algorithm 5,是一种摘要算法,通过内置的hash算法将信息摘要成为定长的十六进制字串

RSA加密算法:与DES不同,RSA算法中,每个通信主体都有两个钥匙,一个公钥一个私钥。就是有2把钥匙:使用publicKey可以对数据进行加密,使用私钥才能对数据进行解密。


(31) 单条记录高并发访问的优化

1.保证在实现功能的基础上,尽量减少对数据库的访问次数;

2.通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;

3.能够分开的操作尽量分开处理,提高每次的响应速度;

4.在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;


(32) 介绍一下ping的过程,分别用到了哪些协议

UDP ICMP ARP OSPF

具体过程是:首先进程在应用层发起一个IP的ping请求,传输层接收到请求,将其加上udp的头部,转发到IP层,IP层根据ICMP 协议进行封装,添加源IP和目标IP封装成为数据包,然后转到链路层,链路层接收到数据包,进行封装对应的mac地址,调用ARP协议,查询ARP缓存表,没有找到则广播出去,寻找对应IP的mac地址,这个过程用到了路由的协议OSPF。


(33) TCP/IP的分片粘包过程

http://blog.csdn.net/qq513036862/article/details/53640317

  1. 因为TCP是面向流的,所以存在分片的现象。TCP中发送有一个缓冲区,缓冲区有固定大小,如果两个包刚好满足这个缓存大小,那么就正常接收,但是其中一个包和另外一个包一部分一起发过去,就发生了粘包过程,当然还有可能是分包情况,同一个包,两次才能接收到。

  2. 产生粘包的原因很多:可能是数据缓存给了太大,可能受到MTU的影响


(34) 一个ip配置多个域名,靠什么识别?

靠http中的host段来完成,服务器根据host将请求转发到指定的主机上。


(35) 服务器攻击(DDos攻击)

分布式拒绝服务攻击,强调是将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。大量恶意的流量去访问同一个服务器,导致服务器处理不过来,功能瘫痪。

上一篇下一篇

猜你喜欢

热点阅读