无论是TCP/IP四层协议还是OSI七层网络协议,传输层的TCP都是非常重要的一个网络协议,众所周知TCP是建立在IP协议之上的点对点可靠的传输协议,不同于IP和UDP,TCP有三次握手、四次挥手等机制能够确保客户端和服务端建立安全的衔接和释放衔接,并供给拥塞操控、滑动窗口等数据传输机制,可是因为其建立衔接的复杂性,演化出了Socket,它是在TCP/IP协议上的一层封装实现,能够通过封装的函数简化用户对TCP/IP协议的运用。通过一段时间的发展,开发者发现Socket在远程调用的语法、参数传递和数据表明上还有一些不够灵敏和便捷,所以又演进出了RPC协议,RPC是根据Socket的更上层的网络传输协议,对Socket进行了进一步的抽象和封装,对开发人员运用上愈加的友爱而且便于扩展,接下来咱们就愈加详细的叙述下这几种网络协议。

可靠的传输层协议—TCP

首先第一个问题,为什么要有TCP协议?

因为IP协议是不可靠的,它只负责数据包的发送,但它不确保数据包能够被接纳、不确保网络包的按序交给和网络包中的数据的完整性。而TCP的出现,正是为了处理这些问题,比如TCP的三次握手便是为了建立安全可靠的衔接,滑动窗口处理数据的有序性,超时重传机制则确保数据的相对完整性

TCP三次握手机制

从TCP到RPC协议都经历了哪些(一)

TCP报文格式

从TCP到RPC协议都经历了哪些(一)

接下来解说下每个字段的详细作用:

  • 源端口号:源计算机上的应用程序的端口号。
  • 方针端口号:方针计算机的应用程序端口号。
  • 序列号:表明本报文段所发送数据的第一个字节的编号。当SYN符号不为1时,这是当前数据分段第一个字母的序列号;如果SYN的值是1时,这个字段的值便是初始序列值(ISN),用于对序列号进行同步。
  • 承认序号:表明接纳方希望收到发送方下一个报文段的第一个字节数据的编号。其值是接纳计算机行将接纳到的下一个序列号,也便是下一个接纳到的字节的序列号加1。
  • 首部长度:数据段头部分的长度。
  • 保存位:为 TCP 将来的发展预留空间,现在悉数为 0。
  • URG:表明本报文段中发送的数据是否包含紧迫数据。URG=1 时表明有紧迫数据,后边的紧迫指针字段才有效。