TCP/IP是一类协议系统,它是用于网络通信的一套协议集合。
TCP/IP被认为是一个四层协议
网络接口层:各种物理通信网络接口
网络层:IP,ICMP,ARP,RARP
传输层:TCP,UDP
应用层:FTP,TELNET,HTTP,SMTP,DNS等
网络接口层:主要是指物理层次的一些接口,比如电缆,双绞线等
网络层:IP协议,ICMP协议,IGMP协议,主要是提供独立于硬件的逻辑寻址,实现物理地址和逻辑地址的转换。
传输层:TCP协议,UDP协议,为网络提供了流量控制,错误控制和确认服务。
应用层:提供具体的应用程序,文件传输,远程控制等
在TCP/IP协议中数据由上往下进行装包,然后从下往上进行解包。
装包过程:
网络层:物理地址与逻辑地址之间的转换
IP:网络ID+主机ID
绝大部分IP属于以下几类:
A类地址:IP地址的前8位代表网络ID,后24位代表主机ID
B类地址:IP地址的前16位代表网络ID,后16位代表主机ID
C类地址:IP地址的前24位代表网络ID,后8位代表主机ID
如何判断一个IP地址属于哪一类?
如果32位的IP地址以0开头,那么它就是一个A类地址。
如果32位的IP地址以10开头,那么它就是一个B类地址。
如果32位的IP地址以110开头,那么它就是一个C类地址。
全是0的主机ID代表网络本身,比如说IP地址为130.100.0.0指的是网络130.100的B类地址。
全是1的主机ID代表广播,用于向该网络中的全部主机发送消息。 IP地址为130.100.255.255就是网络ID为130.100网络的广播地址。
地址解析协议ARP:把IP地址映射为物理地址,与之相反的RARP(逆向ARP)就是将物理地址映射为IP地址。
传输层:传输层提供了两种到达目标网络的方式
TCP(传输控制协议):提供了完善的错误控制和流量控制,能够确保数据正常传输,是一个面向连接的协议。
UDP(用户数据报协议):只提供了基本的错误检测,是一个无连接的协议。
特点:
UDP:
把数据打包
数据大小有限制(64K)
不建立连接
速度快,但可靠性低
TCP:
建立连接通道
数据大小无限制
速度慢,但是可靠性高
应用层:提供各种应用协议
运行在TCP协议上的协议:
TCP三次握手:
第一次握手:客户端发送syn包(syn=j)到服务器,进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到syn包,必须确认syn(ack=j+1),同时自己发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN_ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
TCP四次挥手:
第一次挥手:客户端发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
TCP四次挥手原理:
由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。