码迷,mamicode.com
首页 > 其他好文 > 详细

通信协议TCP/IP协议栈

时间:2016-07-06 14:52:01      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

注:本文内容来自网友大神,作为学习笔记记录在此。如有雷同,敬请谅解;

TCP/IP协议栈主要分为四层:应用层、传输层、网络成、数据链路层;每层都有相应的协议;

技术分享

所谓的协议:就是双方进行数据传输的一种格式。整个网络中使用的协议有很多,所幸的是每一种协议都有RFC文档。

先来看看一帧以太网数据包的格式:

 技术分享

一、TCP协议

      TCP协议在运输层。面向连接(先建立连接),所以保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输协议。

二、UDP协议

      与TCP同级别。无连接,不保证可靠的传输层协议。

三、IP协议

      IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP、IGMP数据都是以IP数据报格式传输。他的特点如下:

  •  不可靠。不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误,e.g.某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息给信源端。任何要求的可靠性必须由上层来提供(如TCP)。
  • 无连接。IP并不维护任何关于后续数据报的状态信息。每隔数据报的处理是互相独立的。也说明,IP数据包可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(A,B),他们独立地进行路由选择,可能不同的路线,B可能在A之前到达。

接下来是介绍详细的头部格式:

1. IP报文格式

    IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。如图

技术分享

    下面是IP头部(报头)格式:

技术分享

  • 版本字段(4bits):当前为IPv4,0100
  • 报头长度(4bits):用于表示报头的长度。0-15,这里指代的单位是32位字(即4个字节),所以表示的最大长度为15*4=60Byte = 480bits。
  • 服务类型(8bits): 1-3bit为优先权子段,现已被忽略;4-7bit:分别代表延迟、吞吐量、可靠性和花费。取值为1分别表示最小时延、最大吞吐量、最高可靠性、最小费用。四个中最多只能有1位为1,对应表示数据报被网络系统传输时怎样处理。可以全为零,表示一般服务。例如:TELNET协议要求最小的延迟,FTP协议数据可能要求最大吞吐量。ICMP协议无特殊要求(4位全为0)。一般而言,主机会忽略这些字段,由动态路由协议根据这些字段的值进行路由决策。
  • 总长度字段(16bits):表示整个数据报的长度(以字节为单位),最大长度为65535字节
  • 标志字段(16bits):用来唯一标识主机发送的每一份数据报。通常每一发一份报文,它的值就+1;
  • 标志位字段(3bits):标志一份数据报是否要求分段。
  • 段偏移字段(13bits):如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。

 

通信协议TCP/IP协议栈

标签:

原文地址:http://www.cnblogs.com/dkma/p/5646653.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!