计算机网络基础知识

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是一个请求<->响应模式的典型范例,即客户端向服务器发送一个请求信息,服务器来响应这个信息。在老的HTTP版本中,每个请求都将被创建一个新的客户端->服务器的连接,在这个连接上发送请求,然后接收请求。这样的模式有一个很大的优点就是,它很简单,很容易理解和编程实现;它也有一个很大的缺点就是,它效率很低,因此Keep-Alive被提出用来解决效率低的问题。
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的保持连接特性,否则会有意想不到的后果

posted @ 2013-10-19 01:57  shangwen  阅读(158)  评论(0编辑  收藏  举报