Q
ping
(ICMP),ICMP means Internet Control Message ProtocolNAT
(Network Address Translation,网络地址转换)- NAT 网络地址转换 NAT(Network Address Translation,网络地址转换)。 NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。 通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭 NAT不仅能解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
- 宽带分享:这是 NAT 主机的最大功能。
- 安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。 私有网络预留出了三个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 上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP 或注册中心申请而在公司或企业内部自由使用
- TCP/IP
- 从上图可以看到,TIME_WAIT出现在client端,即主动关闭的那一端
- TIME_WAIT出现在主动关闭一方,CLOSE_WAIT出现在被动关闭一方
- 从TIME_WAIT状态到CLOSED状态,有一个超时设置,这个超时设置是 2*MSL
- TIME_WAIT确保有足够的时间让对端收到了ACK,如果被动关闭的那方没有收到Ack,就会触发被动端重发Fin,一来一去正好2个MSL
- 有足够的时间让这个连接不会跟后面的连接混在一起
TCP建立连接的过程采用三次握手,已知第三次握手报文的>发送序列号为1000,确认序列号为2000,请问第二次握手>报文的发送序列号和确认序列号分别为
这里主要是TCP三次握手期间的发送序号和确认序号。
- TCP第一次握手期间:客户机向服务器发送请求报文段,发送序号为x
- TCP第二次握手期间:服务器向客户机发送请求+确认报文段,发送序号为y,确认报文段为x+1
- TCP第三次握手期间:客户机向服务器发送确认报文段,发送序号为x+1,确认序号为y+1
- 这里第三次握手报文的发送序列号为1000,确认序列号为2000,可以退出第二次握手发送序号为1999,确认序号为1000.
简化一下,其实有两个序列,客户端发送X,服务器发送Y。三次握手分别是
- 客户端:发送X
- 服务端:发送Y, 确认X+1
- 客户端:发送X+1(1000),确认Y+1(2000)
可以反推第二次为1999,确认1000
这不是同一端的数据包
数据链路层采用后退N帧(GBN)协议
四种情况会发送RST包:
- 端口未打开
- 请求超时
- 提前关闭
- 在一个已关闭的socket上收到数据
keep alive
- 在HTTP1.0和HTTP1.1协议中都有对KeepAlive的支持。其中HTTP1.0需要在request中增加“Connection: keep-alive” header才能够支持,而HTTP1.1默认支持
- 当使用Keep-Alive模式时,Keep-Alive功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接
- 当你的Server多为动态请求,建议关闭keep-alive,server多为静态资源时,建议打开
HTTP/1.0
在HTTP/1.0版本中,并没有官方的标准来规定Keep-Alive如何工作,因此实际上它是被附加到HTTP/1.0协议上,如果客户端浏览器支持Keep-Alive,那么就在HTTP请求头中添加一个字段 Connection: Keep-Alive, 当服务器收到附带有Connection: Keep-Alive的请求时,它也会在响应头中添加一个同样的字段来使用Keep-Alive。这样一来,客户端和服务器之间的HTTP连接就会被保 持,不会断开(超过Keep-Alive规定的时间,意外断电等情况除外),当客户端发送另外一个请求时,就使用这条已经建立的连接
HTTP/1.1
在HTTP/1.1版本中,官方规定的Keep-Alive使用标准和在HTTP/1.0版本中有些不同,默认情况下所在HTTP1.1中所有 连接都被保持,除非在请求头或响应头中指明要关闭:Connection: Close ,这也就是为什么Connection: Keep-Alive字段再没有意义的原因。另外,还添加了一个新的字段Keep-Alive:,因为这个字段并没有详细描述用来做什么,可忽略它 Not reliable(不可靠) HTTP是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive没能改变这个结果。另外,Keep-Alive也不能保证客户端和服 务器之间的连接一定是活跃的,在HTTP1.1版本中也如此。唯一能保证的就是当连接被关闭时你能得到一个通知,所以不应该让程序依赖于Keep- Alive的保持连接特性,否则会有意想不到的后果
internet equipment
- POP3协议用于接收或下载邮件,默认端口110
- SMTP协议用于传输或发送邮件,默认端口25
- DNS是域名解析的系统,默认端口53
- DHCP是动态主机配置协议,默认端口67(服务器)