TCP/IP-(4)-TCP协议
TCP是基于IP 报文上层的一个协议,和上文所言的UDP不同,TCP是为了在恶劣的网络条件下,依然可以提供可靠的网络连接所提供的一种协议。
TCP 协议概述

- TCP提供的是流(可以想象成一个管道)
- TCP拥有发送和接受缓存
- TCP按报文段分发
- TCP是可靠的会进行数据包检查
总而言之和UDP不同,TCP是提供面向连接的协议,比如需要在A-B之间通讯,我们需要使用TCP在A和B之间建立连接。
TCP是基于IP 报文上层的一个协议,和上文所言的UDP不同,TCP是为了在恶劣的网络条件下,依然可以提供可靠的网络连接所提供的一种协议。

总而言之和UDP不同,TCP是提供面向连接的协议,比如需要在A-B之间通讯,我们需要使用TCP在A和B之间建立连接。
UDP是基于IP 报文上层的一个协议,在TCP/IP协议簇中也提及到,其实UDP只是比IP多提供了进程到进程之间的通讯,除此之外并没有提供额外什么功能。

值得注意的点:

IP 报文是 无连接 的,IP报文可能出现丢失,重复等等,这个在IP协议中是无任何保证的,IP协议就是能够将数据发送到目标地址即可。
值得注意的点:
字节为单位的,这个单位只有16位,所以最大为 2^16 = 65535 长度,不过依然会被MTU限制切分传统的网络模式是BIO的模式

我们发现BIO编程模型中最为致命的部分就是 我们需要为 Stream 使用一个 Thread。
所以在JDK1.6中引入了NIO,优化这一部分。

网络是分层的,TCP/IP 关注的是 第三层采用 IP 协议 和 第四层 采用的是 TCP 和 UDP 协议。
对于第一层和第二层,我们需要在意的是 MTU (最大传输单元),
这个值有一个最小值,因为载波监听的需求,并没强制性的最大值,Lan默认的是1500。(如何优化MTU可以见 参考2) 如何查询MTU可以通过 ifconfig 命令查询。
每次公司有新同事,总是会问应该学点什么,每次都回答一遍才挺费力的,索性找个时间把之前看过的东西都好好的整理一下,也权当是回归。