从OSI网络模型到TCP/IP协议族

 

 

 

OSI(开放式互联模型)七层网络模型成为了开放式互联系统参考模型,被定义为通用了的网络通信规范。我们的数据在传输的过程,其实就是在不同的封装和解包的过程具体来说就是  发送方通过各种封装的处理,把数据转换成比特流的形式,比特流在信号传输的硬件媒介中传输,接收方再把比特流解封装处理还原成数据。

1.物理层

  规定了如何为网络通信实现最底层的物理连接,以及物理设备的机械、电气、功能和过程特性。

2.数据链路层

  规定了如何进行物理地址寻址、如何在物理线路上进行数据(帧frame)的可靠传递以及流量控制。

3.网络层

  规定了通过哪些网络节点、什么样的网络路径来将数据(数据包)从发送方发送到接收方。

4.传输层

  负责总体的数据传输和数据控制,提供端到端的交换数据的机制。

5.会话层

  在网络中的两个节点之间建立、维持和终止通信。

6.表示层

  在应用程序和网络之间对数据进行格式化,使之能够被另一方理解。

7.应用层

  最顶层的OSI层,为应用程序提供网络服务。如为电子邮件、文件传输功能提供协议支持。

  应用层协议有HTTP协议、FTP协议、SMTP协议等。

TCP/IP协议

CP/IP协议定义了今天的电子设备如何连入internet网络,以及数据如何在他们之间传输的标准。在今天的基于TCP/IP的互联网诞生之前,能够使用接口通信处理实现互联互通的电脑并不多,而且大部分电脑之间信息的交换并不兼容。

各层的协议:

 TCP/IP——网络接口层

  主要作用一:数据封装/解封装成帧(frame)。

       主要作用二:控制帧传输

       主要作用三:流量控制

 

  TCP/IP——网络层

    说到网络层不得不提的就是IP协议,它是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP、IGMP协议数据都以IP数据报格式传输。IP协议提供的是不可靠的、无连接的数据报传输服务。不可靠是指IP协议不会保证数据报能否成功到达目的地,仅提供传输服务,传输出错,则会丢弃出错的数据报。无连接是指IP协议对数据报的处理是独立的,这也意味着接收方不一定会按照发送顺序接收数据报。

  TCP/IP——传输层

 以下常用端口号:

UDP协议:

  UDP(User Datagram Protocol)即用户数据报协议,其传输机制决定了它的最大优点——快,同时也决定了它最大的缺点——不可靠、不稳定。

  UDP是无连接的,发送数据之前不需要建立连接(TCP需要)。减少了开销和延时。

  UDP是面向报文的,对IP数据报只做简单封装(8字节UDP报头)。减少报头开销。

  UDP没有阻塞机制,宁愿阻塞时丢弃数据不传,也不阻塞造成延时。

  UDP支持一对一、一对多、多对一、多对多通信。

TCP协议:

  TCP(Transmission Control Protocol)传输控制协议,相对于UDP,TCP是面向连接的、提供可靠的数据传输服务。同时也是较UDP开销较大的、传输速度较慢的。

TCP 提供可靠传输,无差错、不丢失、不重复、按顺序。

  TCP 提供全双工通信,允许通信双方任何时候都能发送数据,发送方设有发送缓存,接收方设有接收缓存。

  TCP 面向字节流 。TCP 并不知道所传输的数据的含义,仅把数据看作一连串的字节序列,它也不保证接收方收到的数据块和发送方发出的数据块具有大小对应关系。

TCP建立连接的三次握手:

 

 

 (1)Client首先向Server发送连接请求报文段,同步自己的seq(x),Client进入SYN_SENT状态。

  (2)Server收到Client的连接请求报文段,返回给Client自己的seq(y)以及ack(x+1),Server进入SYN_REVD状态。

  (3)Client收到Server的返回确认,再次向服务器发送确认报文段ack(y+1),这个报文段已经可以携带数据了。Client进入ESTABLISHED状态。

  (4)Server再次收到Client的确认信息后,进入ESTABLISHED状态。

TCP断开连接的四次挥手:

(1)Client向Server发送断开连接请求的报文段,seq=m(m为Client最后一次向Server发送报文段的最后一个字节序号加1),Client进入FIN-WAIT-1状态。

  (2)Server收到断开报文段后,向Client发送确认报文段,seq=n(n为Server最后一次向Client发送报文段的最后一个字节序号加1),ack=m+1,Server进入CLOSE-WAIT状态。此时这个TCP连接处于半开半闭状态,Server发送数据的话,Client仍然可以接收到。

  (3)Server向Client发送断开确认报文段,seq=u(u为半开半闭状态下Server最后一次向Client发送报文段的最后一个字节序号加1),ack=m+1,Server进入LAST-ACK状态。

  (4)Client收到Server的断开确认报文段后,向Server发送确认断开报文,seq=m+1,ack=u+1,Client进入TIME-WAIT状态。

  (5)Server收到Client的确认断开报文,进入CLOSED状态,断开了TCP连接。

  (6)Client在TIME-WAIT状态等待一段时间(时间为2*MSL((Maximum Segment Life)),确认Client向Server发送的最后一次断开确认到达(如果没有到达,Server会重发步骤(3)中的断开确认报文段给Client,告诉Client你的最后一次确认断开没有收到)。如果Client在TIME-WAIT过程中没有再次收到Server的报文段,就进入CLOSES状态。TCP连接至此断开。

 TCP连接可靠性的体现:

  (1)TCP报文段的长度可变,根据收发双方的缓存状态、网络状态而调整。

  (2)当TCP收到发自TCP连接另一端的数据,它将发送一个确认。

  (3)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段。

  (4)TCP将保持它首部和数据的检验和。如果通过检验和发现报文段有差错,这个报文段将被丢弃,等待超时重传。

  (5)TCP将数据按字节排序,报文段中有序号,以确保顺序的正确性。

  (6)TCP还能提供流量控制。TCP连接的每一方都有收发缓存。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧****************

转载于:https://www.cnblogs.com/lp--/p/9544363.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值