传输层协议

88 阅读2分钟

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特性

  1. 工作在传输层
  2. 面向连接协议
  3. 全双工协议
  4. 半关闭
  5. 错误检查
  6. 将数据打包成段,排序
  7. 确认机制
  8. 数据恢复,重传
  9. 流量控制,滑动窗口

tcp3次握手

image-20220111010847549.png

当客户端向服务器发送请求连接的报文时:

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四次挥手

image.png

UDP协议

UDP特性

工作在传输层

提供不可靠的网络访问

非面向连接协议

有限的错误检查

传输性能高

无数据恢复特性