vlambda博客
学习文章列表

OSI网络模型的实现


引言

上篇说了,OSI(Open System Interconnect)即开放式系统互联。一般称之为OSI参考模型,1985年ISO(国际标准化组织)组织研究的网络互联模型。所以OSI是一种参考模型,是一个概念,并没有可实现的接口。TCP/IP可以说是OSI的一种实现。

1、TCP/IP介绍

1.1、TCP/IP是四层还是五层?

先看下面的对比图:


一般书中都会说是四层模型,但是一般网上或者一些教学视频上都会说五层。因为OSI是国际化标准参考模型,所以把链路层分为数据链路层和物理层来讲解更容易让人接受。并且TCP/IP模型对网络层的下层并不关心。

1.2、TCP/IP协议栈

OSI网络模型的实现

TCP/IP协议栈中较重要的协议我以及用红色标注。接下来本文重点讲解TCP协议。

2.、TCP(传输控制协议)简介

➢面向连接的、端到端的、可靠的、基于字节流的传输层通信协议 ➢将应用层的数据流分割成报文段并发送给目标节点的TCP层 ➢数据包都有序号,对方收到则发送ACK确认,未收到则重传 ➢使用校验来检验数据在传输过程中是否有误

3、TCP报文格式

OSI网络模型的实现

  1. 发送端端口号,16位。

  2. 接收端端口号,16位。

  3. sequence number,32位。用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

  4. 确认号(acknowledgement number):Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。

  5. 数据偏移,4位。指出TCP报文段的数据起始处距离报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。

  6. 5.保留:6位 。下面有6个控制位说明本报文段的性质。

  7. 标志(Flags):6位。共6个,如下:

  8. URG :紧急指针标志

  9. ACK :确认序号标志

  10. PSH : push标志

  11. RST :重置连接标志

  12. SYN :同步序号,用于建立连接过程

  13. FIN : finish标志,用于释放连接

  14. 滑动窗口,16位。用于建立连接时,协商发送速度。TCP流量控制的一个手段

  15. 校验和,16位。一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP数据段会被直接丢弃。

  16. 紧急指针,16位。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。因此这个字段是紧急指针相对当前序号的偏移量。当Flags的URG位1时,此字段生效。出现紧急情况时,把它作为带外数据提前发送。

5、总结

在TCP协议中,标志位是重点,三次握手和四次挥手都是通过6个标志+序号+确认号来完成的。

           

做积极的人,而不是积极废人!


< END >

往期文章

 




胡桃七子
一个有故事的程序员


点个「在看」!