目录
TCP(Transmission Control Protocol传输控制协议):对数据传输过程的控制。
1. TCP/IP协议栈
TCP/IP分为四层:
- 链路层(物理层):物理链接领域标准化的结果,专门定义LAN、WAN、MAN等网络标准,通俗点说就是,硬件之间的物理连接层。
- IP层:IP层功能主要是确定传输数据的路径,但IP本身是面向消息,不可靠的,可能会发生数据丢失或错误的问题。
- TCP/UDP层(传输层):TCP则可以解决IP层数据丢失或错误的问题,赋予不可靠的IP协议可靠性。
如图所示,是TCP简单的功能,会确认数据包是否到达。 - 应用层:程序员编写软件过程中,根据程序特点决定服务器端和客户端之间的数据传输规则。
2. TCP原理
2.1 TCP套接字中的I/O缓冲
问:如果服务器端一次性传输了40字节,而客户端却是通过4次read函数,每次读取10字节的方式来接收数据,那么当客户端第一次接收了10字节的数据,剩下30字节的数据去哪了呢?
答:剩下30节的数据都在I/O缓冲里。
实际上write函数调用后并不是马上进行数据传输的,read函数也不是马上进行数据读取的,而是如图:
总结:在write函数执行时,会先将数据,移动到输出缓冲里,在适当的时候,再将数据传送到对方的输入缓冲里,然后对方再通过read函数,从输入缓冲里读取数据。
I/O缓冲有如下特性:
- I/O缓冲在每个TCP套接字中单独存在。
- I/O缓冲在创建套接字时自动生成。
- 即使关闭套接字也会继续传输输出缓冲中遗留的数据。
- 关闭套接字将丢失输入缓冲中的数据。
问:如果客户端输入缓冲为50字节,服务器端却传输了100字节,那么会怎么办?
答:TCP会控制数据流,