一、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
原文地址:https://www.cnblogs.com/yddlvo/p/8422499.html