TCP/IP协议 1 ----实验楼转
2016-03-10 15:22
751 查看
TCP/IP 背景和介绍
TCP/IP 被分为 4 层,每层承担的任务不一样,各层的协议的工作方式也不一样,每层封装上层数据的方式也不一样:(1)应用层:应用程序通过这一层访问网络,常见 FTP、HTTP、DNS 和 TELNET 协议;
(2)传输层:TCP 协议和 UDP 协议;
(3)网络层:IP 协议,ARP、RARP 协议,ICMP 协议等;
(4)网络接口层:是 TCP/IP 协议的基层,负责数据帧的发送和接收。
封装:当应用程序发送数据的时候,数据在协议层次当中从顶向下通过每一层,每一层都会对数据增加一些首部或尾部信息,如下图所示,传输层传给网络层的数据单元称作 TCP 报文段(TCP segment) 或 UDP数据报(UDP datagram) 。网络层传给链路层的数据单元称作 IP 数据报(IP datagram)。链路层上的传输单元称作帧(Frame)。
分用:当主机收到一个数据帧时,数据就从协议层底向上升,通过每一层时,检查并去掉对应层次的报文首部或尾部,与封装过程正好相反。
链路层
简介
上一节已经介绍过,网络层协议的数据单元是 IP 数据报 ,而数据链路层的工作就是把网络层交下来的 IP 数据报 封装为帧(frame)发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。 为达到这一目的,数据链路必须具备一系列相应的功能,主要有:
将数据封装为帧(frame),帧是数据链路层的传送单位;
控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配;
在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
控制帧的传输
差错控制
反馈重发接收方通过对差错编码(奇偶校验码或 CRC 码)的检查,可以判定一帧在传输过程中是否发生了差错。一旦发现差错,一般可以采用反馈重发的方法来纠正。这就要求接受方收完一帧后,向发送方反馈一个接收是否正确的信息,使发送方据此做出是否需要重新发送的决定。发送方仅当收到接收方已正确接收的反馈信号后才能认为该帧已经正确发送完毕,否则需要重发直至正确为止。
计时器
如果某一帧发送出现问题,一直不能发送成功,为了避免传输过程停滞不前,通常引入 计时器 (Timer) 来限定接收方发回反馈消息的时间间隔。当发送方发送一帧的同时也启动计时器,若在限定时间间隔内未能收到接收方的反馈信息,即计时器超时(Timeout),则可认为传出的帧以出错或丢失,就要重新发送。
序号
由于同一帧数据可能被重复发送多次,就可能引起接收方多次收到同一帧并将其递交给网络层的情况。为了防止这种情况,可以采用对发送的帧编号的方法,即赋予每帧一个序号,从而使接收方能从该序号来区分是新发送来的帧还是重发的帧,以此来确定要不要将接收到的帧递交给网络层。
流量控制
由于收发双方各自使用的设备工作速率和缓冲存储空间的差异,可能出现发送方的发送能力大于接收方接收能力的现象,此时若不对发送方的发送速率做适当的限制,前面来不及接收的帧将被后面不断发送来的帧“淹没”,从而造成帧的丢失而出错。由此可见,流量控制实际上是对发送方数据流量的控制,使其发送速率不超过接收方的速率。所以需要一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后再继续发送。这就是流量控制。
以太网
以太网(Ether-net)是指 DEC 公司、Intel 公司和 Xerox 公司在 1982年联合公布的一个标准,这个标准里面使用了一种称作 CSMA/CD 的接入方法。而 IEEE802 提供的标准集
802.3(还有一部分定义到了 802.2 中)也提供了一个 CSMA/CD 的标准。
这两个标准稍有不同,因此链路层数据帧的的封装格式也有所不同(数据帧中的地址为 MAC 地址):
IP网际协议
IP 协议位于网络层,它是 TCP/IP 协议族中最为核心的协议,所有的 TCP、UDP、ICMP 及 IGMP 数据都以 IP数据报格式传输。IP 协议提供的是 不可靠 、 无连接 的数据报传送服务。
不可靠(unreliable):IP 协议不能保证数据报能成功地到达目的地,它仅提供传输服务。当发生某种错误时,IP
协议会丢弃该数据报。传输的可靠性全由上层协议来提供。
无连接(connectionless):IP 协议对每个数据报的处理是相互独立的。这也说明, IP 数据报可以不按发送顺序接收。如果发送方向接收方发送了两个连续的数据报(先是 A,然后是 B),每个数据报可以选择不同的路线,因此 B 可能在A 到达之前先到达。
IP 数据报
如上图所示,普通的 IP 数据报的报头长度 20 字节(除非有选项字段),各个部分的作用:
版本号 :4 位,用于标明 IP 版本号,0100 表示 IPv4,0110 表示 IPv6。目前常见的是 IPv4。
首部长度 :4 位,表示 IP 报头长度,包括选项字段。
服务类型(TOS) :分别有:最小时延、最大吞吐量、最高可靠性、最小花费 4 种服务,如下图所示。4 个标识位只能有一个被置为 1 :
总长度 :16 位,报头长度加上数据部分长度,便是数据报的总长度。IP 数据报最长可达 65535 字节。
标识 :16 位,接收方根据分片中的标识字段相不相同来判断这些分片是不是同一个数据报的分片,从而进行分片的重组。通常每发送一份报文它的值就会加 1。
标志 :3 位,用于标识数据报是否分片。其中的第 2 位是不分段(DF)位。当 DF 位被设置为 1 时,则不对数据包进行分段处理;第 3 位是分段(MF)位,除了最后一个分段的 MF 位被设置为 0 外,其他的分段的 MF 位均设置为 1。
偏移 :13 位,在接收方进行数据报重组时用来标识分片的顺序。
生存时间(TTL) :8 位,用于设置数据报可以经过的最多的路由器个数。TTL 的初始值由源主机设置(通常为 32 或 64),每经过一个处理它的路由器,TTL 值减 1。如果一个数据报的 TTL 值被减至 0,它将被丢弃。
协议 :8 位,用来标识是哪个协议向 IP 传送数据。ICMP 为 1,IGMP 为 2,TCP 为 6,UDP 为 17,GRE 为 47,ESP 为 50。
首部校验和 :根据 IP 首部计算的校验和码。
源 IP 和目的 IP :数据报头还会包含该数据报的发送方 IP 和接收方 IP。
选项 :是数据报中的一个可变长、可选的信息,不常用,多用于安全、军事等领域。
IP 地址分类
为了便于寻址以及层次化构造网络,每个 IP 地址可被看作是分为两部分,即 网络号 和 主机号 。同一个区域的所有主机有相同的网络号(即 IP 地址的前半部分相同),区域内的每个主机(包括路由器)都有一个主机号与其对应。IP 地址被分为 A,B,C,D,E 五类,其中 A 类给大型网络或政府机构等,B 类分配给中型网络、跨国企业等,C 类分配给小型网络,D 类用于多播,E 类用于实验,各类可容纳的地址数目不同。其中我们最常见的为 A,B,C 这三类。
IP 地址用 32 位二进制数字表示的时候,A,B,C 类 IP 的网络号长度分别为 8 位、16 位、24 位:
A 类地址
A 类地址网络号范围:1.0.0.0—127.0.0.0
A 类 IP 地址范围:1.0.0.0—127.255.255.255
A 类 IP 的私有地址范围:10.0.0.0—10.255.255.255
(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)
127.X.X.X 是保留地址,用做循环测试用的
因为主机号有 24 位,所以一个 A 类网络号可以容纳 2^24-2=16777214 个主机号
B 类地址
B 类地址网络号范围:128.0.0.0—191.255.0.0
B 类 IP 地址范围:128.0.0.0—191.255.255.255
B 类 IP 的私有地址范围:172.16.0.0—172.31.255.255
169.254.X.X 是保留地址;191.255.255.255 是广播地址
因为主机号有 16 位,所以一个 B 类网络号可以容纳 2^16-2=65534 个主机号
C 类地址
C 类地址网络号范围:192.0.0.0—223.255.255.0
C 类 IP 地址范围:192.0.0.0—223.255.255.255
C 类 IP 的私有地址范围:192.168.0.0—192.168.255.255
因为主机号有 8 位,所以一个 C 类网络号可以容纳 2^8-2=254 个主机号
相关文章推荐
- http://www.dewen.net.cn/q/15720/这样的情况一个sql语句怎么写
- 打造平安城市精品视频监控网络
- 浅谈HTTP中Get与Post的区别
- 使用802.1X+FreeRadius+LDAP实现网络准入方案
- node.js基础模块http、网页分析工具cherrio实现爬虫
- 判断安卓设备是否连接网络
- http 500错误详细代码意义
- iOS开发网络篇—数据缓存
- 关于HttpClient(调用openstack rest接口失败)
- TCP三次握手,四次挥手的状态变化
- Unity: C# TCP Client Server TcpListener NetworkStream UDP
- 【Android】【xUtils3网络下载图片的简单操作】
- Bitnami-Redmine通过https远程连接svn
- 可扩展,兼容多种网络请求框架的方案!!!
- 统计Apache的并发请求数及其TCP连接状态
- [转] 详解http和https的作用与区别
- Apache JMeter HTTPS(S) Test Script Recorder
- Linux网络编程--定时器的学习和使用
- UNP卷一学习笔记:TCP服务器常见故障
- 卷积神经网络