全硬件TCP/IP协议栈学习笔记(第一天:TCP/IP协议学习一)

原创 2017年10月06日 21:32:21
首先感谢大牛的文章来学习
一.为什么会有TCP/IP协议
首先呢,TCP/IP不是一个协议,而是一个协议族的统称。他们的存在是为了在将电脑联合起来的时候,利用他们可以和其他的计算机终端做自由的交流。
二.TCP/IP协议分层

1.TCP/IP族按照层次由上到下,层层包装。每一层都有自己的功能,每一层都有下一层的支持。而用户接触的,只是最上边一层,没有感觉到下面一层层,但是理解的时候要从最下层由下向上来理解。最上边是应用层,这里有http,ftp等熟悉的协议。而第二层就是传输层,TCP和UDP协议就是在这个层次。第三层是网络层,IP协议就在这里,他负责对数据加上IP地址和其他数据以确定传输的目标。第四层叫做数据链路层,这个层次为待传输的数据加上一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。再往下就是硬件层次,负责网络的传输,这个层次的定义包括网线的格式,网卡的定义等等。
2.发送协议的主机从上到下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。这种结构非常像栈,所以我们也把TCP/IP协议族称为TCP/IP栈。
3.每一层都是为了完成一种功能,为了实现这些功能,需要大家每个人都要遵循共同的规则,而这个规则就叫做“协议”。互联网的每一层都定义了许多协议。而这些协议的总称,就叫做“互联网协议”,他们是互联网的核心。
三.基本常识
1.互联网地址(IP地址):网络上的每一个节点都必须有一个独立的Internet地址,也叫IP地址。通常使用的IP地址是一个32bit的数字,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。需注意,IP地址是网络号+主机号的组合,这十分重要。
2.域名系统:域名系统就是一个分布的数据库,它提供将主机名(就是网址)转换成IP地址的服务。
3.RFC:TCP/IP协议的标准文档。他一共有4000多个协议的定义。
4.端口号:这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口。平时所说的把某某的端口封掉,也只是在IP层次把带有这个号码的IP包滤掉了而已。
5.应用编程接口(API):现常用的编程接口有socket和TLI。主要是提供应用程序和开发人员以访问一组例程功能,而无需考虑其底层的源代码是为何,或理解其内部工作机制的细节。
四.实体层
就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
五.数据链路层
单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号为有何意义?
这就是“连接层”的功能,他在“实体层”的上方,确定了0和1的分组方式。
数据链路层有三个目的:
1.为IP模块发送和接收IP数据报。
2.为ARP模块发送ARP请求和接收ARP应答。
3.为RARP发送RARP请求和接收RARP应答。
注:ARP:地址解析协议,是用IP地址换MAC地址(媒体访问地址,或称为物理地址,硬件地址。MAC地址是网卡决定的,是固定的,共48位,实际上就是适配器地址,IP地址就如同一个职位,而MAC地址则好像是去应聘这个职位的人才,职位既可以让甲坐,也可以让乙坐,同样的道理一个结点的IP地址对于网卡是不做要求,基本上什么样的厂家都可以用,也就是说IP地址与MAC地址并不存在着绑定关系。)的一种协议,而RARP则叫做逆地址解析协议。

以太网的定义是指数字设备公司( Digital Equipment Corp.)、英特尔公司(Intel Corp.)和Xerox公司在1982年联合公布的一个标准。以太网规定,一组电信号构成一个数据包,叫做“帧”,每一帧分成两个部分:标头(head)和数据(data)。

标头包含了数据包的一些说明项,比如发送者,接受者,数据类型等;“数据”包括了数据包的具体内容。标头的长度固定为18字节。数据的长度最长为1500字节,最短为46字节。因此,整个“帧”最长为1518字节,最短为64字节。如果数据很长,就必须分割成多个帧进行发送。
以太网规定,连入网络的所有设备,都必须具有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这就是MAC地址。

定义地址只是第一步,在这之后要解决一块网卡如何知道另一块网卡的MAC地址?回答是一种ARP协议。而在以太网数据包必须知道接收方的MAC地址,然后才能发送。
之后就算有了MAC地址,系统如何才能把数据包准确的发送到接收方?,而以太网采用用了一种很原始的方式,即向本网络内的所有计算机发送,让每台计算机自己判断,是否为接收方。他们读取这个包的“标头”,找到接收方的MAC地址,然后与自身的MAC地址进行比较,如果两者相同,就接受这个包,作进一步处理,否则就丢弃这个包,这种发送方式就叫做广播。

有了数据包的定义,网卡的MAC地址,广播的发送方式,“连接层”就可以在多台计算机之间传输数据。

六.网络层
1.由来:以太网协议,依靠MAC地址发送数据。但是,以太网采用广播来发送数据包,效率低,而且局限在发送者所在的子网络。因此,要找到一种方法,能够区分那些MAC地质属于同一个子网络,那些不是。如果是同一个子网络,就采用广播,否则采用路由(...)方式发送,而这是MAC地址无法实现的,他至于厂商有关,与所处网络无关,这就导致了“网络层”的诞生,他的作用就是引用一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。而这套地址就叫做“网络地址”,简称“网址”。于是,“网络层”出现之后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,他们是随机组合在一起的。
网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据报送到该子网络中的目标网卡,因此,先处理网络地址,在处理MAC地址。
2.IP协议
规定网络地址的协议,叫做IP协议。他所规定的地址,就被称为IP地址。我们采用的一般是IPv4.这个版本规定,网络地址由32个二进制位组成。习惯上分为四段,如255.255.255.255,这个地址分成两部分,前一部分代表网络,后一部分代表主机。但是单从IP地址,我们无法分辨网络部分。因此,我们需要一个参数来判断两台计算机是否属于同一个子网络,这个参数就是“子网掩码”,它在形式上等同于IP地址,也是一个32位的二进制数,他的网络部分全部为1,主机部分为0.知道子网掩码我们就可以判断两个IP地址是否属于同一个自网络下,方法就是将两个IP地址与子网掩码分别进行AND运算。,比较结果是否相同,如果是的话,就表明在同一个子网络中。
所以,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定那些地址在同一个子网络。
3.IP数据包
根据IP协议发送的数据,就叫做IP数据包。其中包含IP地址信息。但是由于以太网数据包只包含MAC地址,并没有IP地址栏,但我们也并不需要为他添加一个栏位,我们将IP数据包直接放进以太网数据包的“数据”中,而不用修改以太网的规格,这就是互联网分层的好处:上层的变动完全不涉及下层的结构。IP数据也分为“标头”和“数据”两部分,"标头"主要是版本,长度,IP地址,“数据”部分则是IP数据包的具体内容。他放在以太网数据包后,就是这样

IP数据包的“标头”部分的长度为20到60字节,整个数据包的总长度最大为65535字节,因此,一个IP数据包的“数据”部分最长为65515字节。
版权声明:本文为博主原创文章,未经博主允许不得转载。

学习心得之通信篇(TCP/IP协议栈)

上篇讲到的协议寻址机制简单,传输速度慢,不适合大范围,大流量的数据传输,因此,主要被应用于设备内部(如IC之间,电路板与电路板之间)。TCP/IP协议栈物理层采用光纤/同轴电缆为传输介质,传输速率快,...
  • chengshuashuacc
  • chengshuashuacc
  • 2016年03月02日 07:26
  • 998

全硬件TCP/IP协议栈学习笔记(第四天:全硬件TCP/IP协议模块学习)

做了许多天的网络协议学习,懵懵懂懂了解了点,索性打开说明书开始模块的学习 之前三天的学习都是在协议栈上,今天的学习进入以太网接入方案。 PS.我使用的野火W5500网络扩展板 我们的方案按TCP/I...
  • stanary
  • stanary
  • 2017年10月09日 22:35
  • 125

剖析:WIZnet以太网核心技术–全硬件TCP/IP协议栈

WIZnet,是全球第一家专注于全硬件TCP/IP协议栈技术(iOffloadTM Tech)的半导体公司,精心为用户提供高速稳定的以太网解决方案,广泛应用在工业自动化、智能电网、安防门禁、金融机具等...
  • WIZnet2012
  • WIZnet2012
  • 2015年03月04日 16:58
  • 2028

基于Cortex M3和全硬件TCP/IP协议的以太网控制芯片--- iMCU W7200

继WIZnet公司推出W7100, W7100A之后, 2012年WIZnet再接再厉发布了新的ARM 32位的Cortex M3芯片(STM32)+ 全硬件TCP/IP协议芯片(W5200)——iM...
  • WIZnet2012
  • WIZnet2012
  • 2012年02月10日 09:16
  • 6010

浅谈TCP/IP协议栈(一)入门知识

说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋。 万事开头难,然...
  • u012155923
  • u012155923
  • 2016年04月15日 23:08
  • 4497

《TCP/IP详解卷一:协议》学习笔记三

一、引言 1、IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。 2、IP提供不可靠以及无连接的数据包服务  1)、不可靠的意思是它不能...
  • Explorer_day
  • Explorer_day
  • 2017年03月30日 21:32
  • 662

一个轻量级的开源TCP/IP协议栈

网站:http://savannah.nongnu.org/projects/lwip/             http://www.sics.se/~adam/lwip/...
  • zhangxinrun
  • zhangxinrun
  • 2011年12月26日 17:41
  • 1761

Linux TCP/IP 协议栈源码分析(一)

----------------------------------------------------------------------------------------------------...
  • SkyGG
  • SkyGG
  • 2004年07月09日 15:30
  • 9891

自己动手写一个小型的TCP/IP协议

TCP/IP协议大家都知道,但真正理解的人不多,不如动手写一个小型的看看。我知道看书很枯燥,看不懂,还打击大家的信心,不是我们的脑袋不如人,是我们的方法错了。一切的技术都从应用中发展而来,所以要从下往...
  • clrmas
  • clrmas
  • 2016年10月17日 22:45
  • 992

软件协议栈PK硬件协议栈,你更看好谁?

背景介绍     在持续增长的电子设备联网需求下,无线传感器网络、智能家居等新兴应用市场急需找到更加稳定可靠的以太网解决方案,来实现以太网功能。     软...
  • WIZnet2012
  • WIZnet2012
  • 2012年08月13日 13:53
  • 2675
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:全硬件TCP/IP协议栈学习笔记(第一天:TCP/IP协议学习一)
举报原因:
原因补充:

(最多只允许输入30个字)