关于HTTP和TCP/IP

一、TCP/IP

概念:TCP/IP是互联网相关的各类协议族的总称。

TCP/IP协议族按层次分为4层,应用层、传输层、网络层和数据链路层。

应用层:

决定了向用户提供应用服务时通信的活动。TCP/IP协议族内预存了各类通用的应用服务。比如FTP(文件传输协议)和DNS(域名系统)服务就是其中两类。HTTP协议也处于该层。

传输层:

对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。

在传输层有两个不同的协议:TCP(传输控制协议)和UDP(用户数据报协议)。

网络层:

处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机,并把数据包传送给对方。IP网际协议位于该层。

链路层:

用来处理链接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(网络适配器,网卡)及光纤等物理可见部分。

TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送消息。而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双工。单双工只能A发给B,B不能发给A;或者只能B发给A,A不能发给B。

在创建TCP连接时,三次握手:

  • 发送端发送一个带有SYN标志的数据包给接收端。
  • 接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。
  • 最后发送端再传回一个带ACK标志的数据包,代表握手结束。

断开TCP连接时,四次握手,比如客户端数据发送完了,需要断开连接

  • 客户端发送一个FIN给服务端,客户端=>FIN_WAIT1(关闭客户端到服务器的连接)
  • 服务端收到FIN后,发回一个ACK。服务端=>CLOSE_WAIT
  • 服务端发送一个FIN给客户端。服务端=>LAST_ACK(关闭服务器到客户端的链接)
  • 客户端收到FIN,然后返回一个ACK。客户端=>TIME_WAIT,服务端=>CLOSE

此处,首先关闭的是客户端,执行主动关闭,而另一方执行被动关闭。在最后一次握手中,客户端发送一个ACK后,会进入time-wait,此时CP链接并没有释放,然后经过时间等待计时器设置的2MSL后,客户端才进入到close状态。2MSL是报文存在的最大时间

参考文档:http://blog.csdn.net/guyuealian/article/details/52535294

posted @ 2018-02-06 15:14  尹丹  阅读(178)  评论(0编辑  收藏  举报