TCP/IP协议是个协议簇
分为三个层次:网络层、传输层和应用层
网络层中有: IP协议、ICMP协议、RARP协议和BOOTP协议;
传输层中有:TCP协议和UDP协议;
应用层中有:FTP、HTTP、TELNET、SMTP、DNS等协议.
HTTP协议:
建立在请求/响应模型上.首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法\URI\协议版本以及相关的MIME样式的信息.服务器响应一个状态行,包含协议的协议版本/一个成功或失败码以及相关的MIME样式的信息.HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次短期的TCP链接.一次TCP链接的建立需要3次握手.另外为了获得适当的传输速度,则需要TCP花费额外的回路链接事件(PTT).每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的信息,只是保证链接的可靠性,因此HTTP/1.0提出了可持续链接的实现方法.HTTP/1.0只建立一次TCP的链接而重复的使用它传输一系列额请求/响应消息,减少了链接建立的次数和经常性的链接开销.
虽然HTTP本身是一个协议,但是还是基于TCP的.
面向连接的TCP
'面向连接’就是在正式通信前必须要与对方建立起连接,
TCP(传输控制协议)是基于连接的协议,一个TCP连接必须经过三次’对话’才能建立起来:
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack = j+1),同时自己也发送一个SYN包(syn = k),即SYN+ACK包,此时服务器进入SYN_RECV状态,ACK:确认字符;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器端进入ESTABLISHED(TCP连接成功)状态,完成三次握手.
面向非连接的UDP
'面向非连接’就是在正式通信之前不必与对方先建立连接,不管对方状态就直接发送.
UDP(用户数据报协议)是与TCP相对应的协议,不与对方建立连接,而是直接就把数据包发送过去.适用于一次只传送少量数据、对可靠性要求不高的应用环境. 通信效果高,但是可靠性不如TCP协议.