HTTP协议详解.pages.zip
TCP-IP协议详解
HTTP协议详解,你所不知道的
TCP/IP
Transmission Control Protocol/Internet Protocol 的简写,中译文为传输控制协议/因特网互联协议,又名网络通讯协议,是internet最基本的协议、internet国际互联网的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,知道所有的数据安全正确地传输到目的地。二IP是给因特网的媚态梁王设备规定一个地址。
IP
IP层接受由更底层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高——TCP或UDP层;相反,IP层也把从TCP或UDP层接受来得数据包传送到跟底层。IP数据包是不可靠的,因为IP并没有任何事情来确认数据包是否按顺序发送的活着有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP服务在接受数据包是,通常假设包中的源地址是有效的。也可以这么说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。
TCP
TCP是面向连接的通信协议,通过三次握手建立连接,通讯连接时要猜出连接,由于TCP是面向连接的所以只能用于端到端的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”计数来实现传输的可靠性。TCP还采用一种称为“”滑动窗口“的方式进行流量控制,所谓窗口世界表示接收能力,用以限制发送方的发送速度。
UDP
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输协议,可能会出现丢包现象,实际应用中要求程序员编程验证。
UDP和TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于哪些使用虚电路的面向连接的服务,UDP主要用于哪些面向哪些面向查询——应答的服务,例如NFS。
ICMP
ICMP与IP位于同一层,它被用来传送IP的控制信息。它主要是用来提供有关通向目的地址的路径信息。
端口
端口将应用进程与IP网络相关联,是应用进程的地址标识,一个端口是一个16位号码。
端口分为公用和临时两种:
公用端口:属于标准服务器,由权威机构IANA统一分配,从1~1023.
临时端口:用于客户,从1024~65535.
Socket 套接字
为了使得多主机多进程通信时,不至于发生混乱情况,必须把端口号和主机的IP地址结合起来使用,称为插口或套接字(Socket)。
由于主机的IP地址是唯一的,这样目的主机就可以区分收到的数据报的源端机了。
套接字包括IP地址(32位)和端口号(16位),共48位。
例如(123.33.13.55,200)和(126.45.21.51,25)就是一对儿套接字,在整个Internet中,在传输层上进行通信的一对套接字都必须是唯一的。
三次握手
TCP链接的建立
第一次握手:客户端TCP首先给服务器端TCP发送一个特殊的TCP数据段。该数据段不包含应用层数据,并将头部中的SYN为设置为1,所以该数据段被称为SYN数据段。另外,客户选择一个初始序列号SEQ,设SEQ=x,并将这个编号放到初始的TCP SYN数据段的序列号字段中。该数据段被封装到一个IP数据报中,并发送给服务器。
第二次握手:一旦装有TCP SYN数据段的IP数据报到达了服务器主机,服务器将从该数据中提取出TCP SYN数据段,给该链接分配TCP缓冲区和变量, 并给客户TCP发送一个允许连接的数据段。这个允许连接的数据段也不包含任何应用层数据。但是它的头部装有3个重要信息。首先SYN被设置为1;其次,TCP数据段头部的确认字段被设置为x+1;最后,服务器选择自己的初始顺序号,SEQ=y,并将该值放到TCP数据段头部序列号字段中。
第三次握手:在接收到允许连接数据段之后,客户也会给连接分配缓冲区和变量。客户端主机还会给服务器发送另一个数据段,对服务器的允许连接数据段给出确认。
连接的释放
第一次握手:有进行数据通信的任意一方提出要求释放连接的请求报文段。
第二次握手:接收端收到此请求后,会发送确认报文段,同时当接收端的所有数据也都已经发送完毕后,接收端会向发送端发送一个带有其自己序号的报文段。
第三次握手:发送端收到接收端的要求释放连接的报文段后,发送反向确认。