计算机网络基础知识
TCP和UDP有什么区别?
TCP是传输控制协议,提供的是面向链接、可靠的字节流服务,当客户和服务器交换数据之前,必须先在双方建立一个TCP的链接,之后才能传输数据,TCP提供超时重传机制,丢失重复数据、检验数据、流量控制等功能,保证数据能从另一端传到另一端。
常见的TCP端口:FTP的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP的80端口
UDP是用户数据报协议,是一个简单的面向数据报的运输协议,UDP不提共可靠性,他只是吧应用层传给他的数据传给IP层发送出去,由于在传送的时候不需要提前建立链接,而且没有超时重传的机制,故传输速度比较块。
常见的UDP端口:DNS的53端口,SNMP(简单网络管理协议)161端口等。
网络中常见的ping命令是什么协议?
ICMP(Internet控制消息协议)用于判断网络通不通,主机是否可以到达,路由是否可用等网络本身的消息。
TCP的三次握手
第一次握手:建立链接的时候,client发送SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到SYN包,必须确认client的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:client收到SYN+ACK包,向服务器发送确认包ACK(ACK=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,握手完成。
关于TCP的四次挥手
理解状态图:详情看连接:http://hi.baidu.com/psorqkxcsfbbghd/item/70f3bd91943b9248f14215cd
HTTP 的keepalive(本内容来自互联网)
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的保持连接特性,否则会有意想不到的后果