一、概念了解
TCP/IP是一个网络通信协议簇,由应用层、传输控制层、网络层、网络接口层组成。TCP/IP中并非只有TCP和IP这两个协议,由于TCP和IP最具代表性,因此以此为名。
应用层:HTTP(超文本传输协议)、FTP(文件传输协议)、Telnet(远程登录协议)。。。
传输控制层:TCP、UDP
网络层:IP
网络接口层:ARP
二、HTTP
HTTP是一种请求/响应式的应用层协议,规定了请求和响应的格式(请求报文和响应报文)。
1、请求报文
请求方法:常见的有get、post、head、put、delete、options、trace、connect
get:主要获取服务端资源,参数和参数值附在URL后面,可携带参数较少
post:主要提交数据服务端更新资源等,参数和参数值附在请求数据中,可携带参数较多
请求头部:最常见的如cookie
2、响应报文
状态码:1**(服务端收到请求,需请求端继续操作)、2**(成功)、3**(重定向)、4**(客户端错误)、5**(服务端错误)
常见状态码:
200:成功
301:资源永久转移到其他URL
404:请求资源不存在
500:内部服务器错误
三、TCP协议
TCP是面向连接、可靠的传输控制层协议。
面向连接:通过三次握手发送数据包建立连接,但是客户端和服务端并没有物理上的连接。
可靠的:因为三次连接的机制,使得客户端和服务端都具备发送和接受的功能,所以是可靠的连接。
三次握手:
第一次:客户端发送SYN(SEQ=X)给服务端,服务端接收-----------确保了客户端能发送
第二次:服务端发送ACK(ACK=X+1)和SYN(SEQ=Y)给客户端,客户端接收----------确保了服务端能接收和能发送
第三次:客户端发送ACK(ACK=Y+1)给服务端,服务端接收----------确保了客户端能接收
四次分手:
第一次:客户端发送FIN给服务端
第二次:服务端发送ACK给客户端
第三次:服务端发送FIN给客户端
第四次:客户端发送ACK给服务端
socket(套接字):
通过 ip:port(客户端)+ip:port(服务端) 建立连接,每个主机可以有65535个port
四、网络层和网络接口层
目标IP在路由表中逐个和掩码与运算得到下一跳的IP地址或者网关。
ARP等协议用广播的方式,通过下一跳的IP得到Mac地址。如此数据包中包含目标IP和下一跳的Mac地址,直到找到目标IP和目标进程端口
五、TCP/IP整体的运行原理
应用层(如HTTP)做好了请求包想要发送,但是没有建立连接,于是
传输控制层(如TCP)通过socket表找到目标IP,想通过三次握手建立连接。但是握手需要发送数据包,于是
网络层在路由表中通过目标IP和掩码“与”运算得到下一跳IP,但是需要将目标IP放在数据包中,无法再放下一跳IP,于是
网络接口层通过ARP协议的广播机制得到下一跳的Mac地址,于是用装有 目标IP和下一跳Mac地址的数据包一步一步找到目标主机