1.七层网络模型
以客户端向服务端发送“hello”为例子,来说明网络传输的过程。
应用层 //用户把字符串“hello”转化成二进制流传输给传输层 [ hello =》 110110001100101110110011011001101111]
表示层
会话层
传输层 //以TCP为例说明, [ TCP首部|110110001100101110110011011001101111]
网络层 //以IP协议为例说明,必要时拆分数据 [ IP首部|TCP首部|1101000110010] [ IP首部|1110110011011001101111]
数据链路层, // 将比特流组合成帧,以帧为单位进行传送 [ 帧首部|数据 ] [ 帧首部|数据 ] [ 帧首部|数据 ]
物理层 //通过物理介质进行传输,例如使用电缆,光纤
2.TCP连接的建立与终止
TCP是面向连接的,无论哪一方在向另一方发送数据之前,都必须先在双方之间建立一条连接。
在TCP/IP协议中,TCP协议提供可靠的连接服务,连接时通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号,并交换TCP窗口大小的信息。
待数据传送完毕,TCP通过“四次挥手”来确保双端都断开了连接。
3.Socket 套接字
套接字是支持TCP/IP协议网络通信的基本操作单元,可以将套接字看作不同主机间的进程双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。
下图展示的是一套基本的Socket通信流程。
备注:文章内容,代码都来源于 《Unity3D网络游戏实战》(罗培羽 著)这本书