OSI七层模型为:
TCP/IP四层模型:

| OSI七层模型 | TCP/IP四层模型 | 功能 | 协议 |
| 应用层 | 应用层 | 文件传输,电子邮件,文件服务,虚拟终端 | FTP、HTTP、SNMP、SMTP、DNS、Telnet |
| 表示层 | 数据格式化,代码转换,数据加密 | 无 | |
| 会话层 | 解除或建立与别的接点的联系 | 无 | |
| 传输层 | 传输层 | 提供端对端的接口 | TCP、UDP |
| 网络层 | 网络层 | 为数据包选择路由 | IP、ICMP、RIP、OSPF、BGP、IGMP |
| 数据链路层 | 网络接口层 | 传输有地址的帧以及错误检测功能 | PPP、ARP、MTU、SLIP |
| 数据层 | 以二进制数据形式在物理媒体上传输数据 | IEEE802 |
总结来说,就是物理层通过物理手段把电脑连接起来,数据链路层对比特流的数据进行分组,网络层来建立主机到主机的通信,传输层建立端口到端口的通信,应用层最终负责建立连接,数据格式转换,最终呈现给用户。

第一次握手:客户先向服务器发送一个请求建立链接的数据包,数据包的TCP首部内容为:(SYN=1,ACK=0,seq=x)
第二次握手:服务器收到客户端发送的第一个数据包后,根据(SYN=1,ACK=0)判断出是主动建立链接的数据包,如果服务器同意连接,则服务器就会发送一个数据包进行回应,这个数据包的TCP首部包含(同步SYN=1,确认ACK=1,序号seq=y,确认号ack=x+1)
第三次握手:客服端收到服务器的确认后,再给服务器发送一个数据包,数据包首部包含(同步SYN=0,确认ACK=1,序号seq=x+1,确认号ack=y+1),双方已同意建立连接。

这个过程就像我想和你一起去吃饭,我们素不相识,我不可能一上来就叫你去吃饭,如果我一上来就叫你一起去吃饭,你可能会想:这人谁呀,神经病吧!!!哈哈哈哈哈哈哈哈哈,那我要怎么做呢?
我应该先发出想要认识你的请求“你好呀!我是何故逸”,就是第一次握手;然后你收到我的请求后,如果要同意我的请求就要返回给我一个确认信号,“你好呀!何故逸”,就是第二次握手;接下来我才叫你去吃饭,这个时候我们双方已经同意连接了,这就是第三次握手。
其实在建立TCP连接过程中的前两次握手:(1)客服端发送请求(2)服务器向客服端确认这个请求,就足以证明客户端与服务器之间的网络是通畅的。但是如果没有第三次握手的话就可能会出现重复连接,旧的重复连接引起连接混乱的现象。
并且通过三次握手可以得到一个确认的可靠初始化序列号seq,用于进行可靠性传输。而如果只有两次握手,则无法初始化序列号seq。
当然TCP连接通过4次5次连接与可以,但是3次握手是最节省资源的连接方式。

四次挥手就是释放连接的过程,
第一次挥手:首先客户端向服务器发送连接释放的请求报文(终止FIN=1,确认ACK=0),并停止发送数据。
第二次挥手:服务器收到连接释放的报文之后,给客户端发送确认报文(FIN=0,ACK=1,)。从客户端到服务器这个方向上的连接就释放了,TCP连接处于半关闭状态。此时客户端无法发送数据给服务器,但是服务器还可以发送数据给客户端,客户端仍可以接收。
第三次挥手:若服务器已经没有向客户端发送的数据了,其应用进程就通知TCP释放连接,并向客户端发送确认报文(ACK=1,FIN=1)。
此后服务器不再向客户端发送数据,但能接收数据。
第四次挥手:客户端收到服务器的连接释放报文段后,向服务器发出确认报文(ACK=1,FIN=0)。

流量控制是为了控制发送方的发送速率,保证接收方来得及接收。
TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失,从而实现流量控制。
TCP使用的流量控制协议是可变大小的滑动窗口协议(即TCP利用滑动窗口实现流量控制)
滑动窗口是TCP协议用于实现流量控制的一种机制。
发送发和接收方分别维护各自的缓冲区,这个缓冲区就是窗口。发送发的窗口大小由接收方的TCP首部的窗口字段决定。
发送方的滑动窗口:
发送方将窗口内容分为两部分:发送窗口和可用窗口。
随着不断的接收到ACK确认和数据发送,发送窗口和可用窗口将不断在向前滑动。
1~31 字节32~45 字节46~51字节52字节以后
当发送方把数据「全部」都一下发送出去后,可用窗口的大小就为 0 了,表明可用窗口耗尽,在没收到 ACK 确认之前是无法继续发送数据了。

当收到之前发送的数据 32~36 字节的 ACK 确认应答后,如果发送窗口的大小没有变化,则滑动窗口往右边移动 5 个字节,因为有 5 个字节的数据被应答确认,接下来 52~56 字节又变成了可用窗口,那么后续也就可以发送 52~56 这 5 个字节的数据了。
