TCP和Socket
一、TCP
0. 网络分层
- OSI:(Open System Interconnection Reference Model)开放系统互联模型。(自顶向下)
分层 | 名称 | 描述 |
---|---|---|
第七层 | 应用层 | 开发程序之后产生的数据 |
第六层 | 表示层 | 将应用程序的数据进行打包、压缩、加密等待 |
第五层 | 会话层 | 用于创建、管理、关闭网络应用程序的会话 |
第四层 | 传输层 | 定义了进程到进程之间的数据传输。port |
第三层 | 网络层 | 定义了IP到IP之间的数据传输。路由器,ip地址 |
第二层 | 数据链路层 | 定义了主机网卡到网卡之间的数据传输。交换机。mac地址 |
第一层 | 物理层 | 定义了数据传输的介质。网线、网卡 |
TCP/IP
四层模型
分层 | 协议 |
---|---|
应用层(应用层、表示层、会话层) | http、https、ftp、SMTP |
传输层(主机到主机层) | TCP、UDP |
网际层(网络层) | IP、ARP |
网络接入层 | EnterNET |
1. 网络应用之间的通信流程
当网络中的应用需要进行通信,首先需要建议数据通信的协议。
确定协议之后创建连接,开始收发消息。当通信结束之后,需要关闭这个通信的连接,释放资源。
在目前的互联网环境中,网络应用使用的协议主要为TCP
。
2. TCP的概念
TCP:(Transmission Contal Protocol)传输控制协议。它是一种面向连接、可靠的、安全的数据传输协议。TCP报文是基于数据流(Steam)。
UDP:(User Datagram Protocol)用户数据报协议。它是一种无连接、不可靠的,基于数据报(Datagram)的数据传输协议。
3. TCP的特点
- 面向连接:在应用程序通信之前,需要使用TCP建立连接,然后进行通信,再关闭连接
- 安全可靠
- 错误重传
- 超时重传
- 数据报文是有序
4. 三次握手和四次挥手
- 三次握手
- 第一次握手:客户端发送一个【SYN】同步包给服务端
- Seq = X
- 第二次握手:服务端发送一个【ACK】确认包给客户端
- Ack = X + 1
- Seq = Y
- 第三次握手:客户端发送一个【ACK】确认包给服务端
- Ack = Y + 1
- 第一次握手:客户端发送一个【SYN】同步包给服务端
- 四次挥手
- 第一次挥手:客户端发送一个【FIN】断开包给服务端
- Seq = X
- 第二次挥手:服务端发送一个【ACK】确认包给客户端
- Ack = X + 1
- 第三次挥手:服务端发送一个【FIN】断开包给客户端
- Seq = Y
- 第四次挥手:客户端发送一个【ACK】确认包给服务端
- Ack = Y + 1
- 第一次挥手:客户端发送一个【FIN】断开包给服务端
二、Socket
1. 概念
Socket(套接字),是进程与进程之间传输数据的载体。
举例:
- IP和端口,相当于手机号码;
- TCP:相当于语法种类;
- Socket:手机(基带、射频元件)
进程之间想要进程通信就需要基于套接字
2. 作用
Socket负责进程之间数据的传输,好比数据的搬运工。
在计算机行业内,只要与网络应用通信的软件都使用了Socket