TCP/IP
是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议 最早发源于1969年美国国防部(缩写为DoD)的因特网的前身ARPA网络项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护国防高级研究计划局DARPA与BBN技术公司、斯坦福大学和伦敦大学学院签约,在多个硬件平台上开发协议的操作版本。
TCP/IP 和OSI 模型比较
相同点
两只都是以协议栈的概念基础 协议栈中的协议彼此相互独立 下层对上层提供服务
不同点
OSI是先有模型:TCP/IP是先有协议,后有模型 OSI是国际标准,适用各种协议;TCP/IP实际标准,只适用tcp/ip网络层次数量不同
TCP是面向连接协议
tcp是面向连接的,可靠的进程通讯协议,支持双工通讯,每一个TCP都有发送缓存和接收缓存,用来存储数据
UDP协议是无连接,不保证可靠的传输层协议。发送端不关心数据是否发送到目标主机,数据是否出错,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输层速度更快效率更高
TCP特性
- 工作在传输层
- 面向连接协议
- 全双工协议
- 半关闭
- 错误检查
- 将数据打包成段,排序
- 确认机制
- 数据恢复,重传
- 流量控制,滑动窗口
tcp3次握手
当客户端向服务器发送请求连接的报文时:
Seq序列号=x(x为随机)
SYN=1(表示发送连接请求)
服务器端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文:
Seq序列号=y(这时服务器也会产生一个序列号y,和客户端的序号不相关)
Ack确认号=x+1(Seq序列号x+1,表示确认收到了客户端的请求)
ACK=1(表示这是条确认请求)
SYN=1(同时也发送一个建立连接的请求)
客户端进程收到服务端进程的确认后,还要向服务端给出确认,然后连接成功建立:
Seq序列号=x+1(这时客户端的序号为1)
Ack确认号=y+1(表示确认收到了服务器的连接请求)
ACK=1(表示这是确认报文)
tcp四次挥手
UDP协议
UDP特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性