参考(照搬)
https://www.cnblogs.com/jking10/p/5525519.html
TCP
Transmission Control Protocol 传输控制协议.
主机对主机层的传输
三次握手确认 建立一个连接
位码
tcp标志位,有6种
SYN(synchronous):建立联机
ACK(acknowledgement):确认
PSH(push):传送
FIN(finish):结束
RST(reset):重置
URG(urgent):紧急
Sequence number(顺序号码)
Acknowledge number: 确认号码
三次握手
第一次握手
客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认
第二次握手
服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),服务器收到后,客户端和服务器进入ESTABLISHED状态,完成三次握手.
断开连接经过四次握手
就是服务器和客户端交互,最终确定断开
HTTP
http连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接.
SOCKET原理
套接字(socket)概念
套接字是通信的基石,是支持tcp/ip协议的网络通讯基本操作单元
它是网络通信过程中端点的抽象表示
包含5种信息:
连接使用的协议
本地主机的IP地址
本地进程的协议端口
远地主机的IP地址
远地进程的协议口
建立socket连接
建立连接至少需要一对套接字
其中一个运行于客户端,称为ClientSocket
另一个运行于服务器端,称为ServerSocket
连接过程的三个步骤
服务器监听:
服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求
客户端请求:
客户端的套接字提出连接请求,要连接的目标是服务器端的套接字.为此,客户端的套接字必须首先描述它要连接的服务器的套接字,支出服务器套接字的地址和端口号,然后想服务器端套接字提出连接请求
连接确认:
当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了次描述,双方就正式建立连接.而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求
SOCKET连接与TCP连接
创建Socket 连接时,可以指定使用的传输层协议,当使用TCP连接
Socket连接与HTTP连接
网络通信中,客户端到服务器之间的通信要穿越多个中间节点,例如路由器,网关,防火墙,大部分防火墙默认会关闭长时间处于非活跃状态的连接,因此需要轮询告诉网络,该连接处于活跃状态.而HTTP连接使用的是"请求--响应"的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器才能回复数据,
很多情况下,需要服务器端主动向客户端推送数据,保存客户端与服务器数据的实时与同步.
IP 协议
Internet Protocol(网络之间互连的协议)的缩写,中文简称'网协'.IP地址具有唯一性,根据用户性质的不同,可以分为5类
网友评论