0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

学FPGA,慢慢来 2017-12-18 10:25 次阅读

关于昨天的“网络层”,还有最后一点说明,由于IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。但是在通常情况下,对方的IP地址是已知的,但是我们不知道他的MAC地址。而这又分为两种情况,第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的“网关”,让网关去处理。

第二种情况,如果两台主机在一个子网络,那么我们可以使用ARP协议,得到对方的MAC地址。ARP协议也是发出一个数据包,其中包含他要查询的的主机的IP地址,在对方IP一栏,填的是FF:FF:FF:fFF:FF,表示这是一个“广播”地址,他所在的子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自己的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。有了ARP协议之后,我们就可以得到同一个子网络中的主机MAC地址,可以把数据包发送到任意一个主机之上。

IP协议是TCP/IP的核心,所有的TCP,UDP,IMCP,IGCP的数据都是以IP数据格式。但是IP不是可靠的协议,这就是说,IP协议没有提供一种数据未传达以后的处理机制。而这被认为是上层协议要做的事,所以这也就是出现了TCP是一个可靠的协议,而UDP就没有那么可靠。

其中有一个8位生存时间(TTL)字段,该字段规定了该数据包在穿过多少个路由之后才会被抛弃,而这就证明IP协议是不可靠的,他不能保证数据被送达,某个IP数据包每穿过,该数据包的TTL数值就会减少1,当这个数据包的TTL成为0时,它就会被抛弃。这个数段的最大值就是255,也就是说一个协议包也就是在路由器中穿行了255次之后就会被抛弃,根据系统的不同,这个数据也不太一样。

如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。

搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机

搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助。如果找到路由器,则将该包发向路由器。

搜索路由表,如果匹配同子网路由器失败,则匹配同网号(第一章有讲解)路由器,如果找到路由器,则将该包发向路由器。

搜索陆游表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包

如果都失败了,就丢掉这个包。

由于IP协议不是一个可靠的协议,他不能保证数据被送达,而保证数据送达的工作应该由其他的模块来完成。其中一个很重要的模块就是ICMP(网络控制报文)协议。当传送IP数据包发生错误时,比如主机不可达,路由不可达等等,ICMP会把错误信息封包,然后传回给主机。给主机一个处理错误的机会,这正是建立在IP层以上的协议就是可以做到安全的原因。ICMP数据包由8bit的错误类型和16bit的校验位组成。

尽管在大多数情况下,错误的包传送应该给出ICMP报文,但是在特殊情况下,是不产生ICMP错误报文的。如下

ICMP差错报文不会产生ICMP差错报文(出IMCP查询报文)(防止IMCP的无限产生和传送)

目的地址是广播地址或多播地址的IP数据报。

作为链路层广播的数据报。

不是IP分片的第一片。

源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地 址或多播地址。

虽然里面的一些规定现在还不是很明白,但是所有的这一切规定,都是为了防止产生ICMP报文的无限传播而定义的。

七.传输层

1.由来:有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。而你在多个进程的时候,许多程序都要使用网络,如一边浏览网络,一边与朋友聊天。当一个数据包从互联网上发过来的时候,你怎么知道他是网络的内容还是在线聊天的内容。因此我们还需要一个参数,表示这个数据包到底供哪个程序使用,这个参数就叫做“端口”,他其实就是每一个使用网卡程序的编号。每个数据发送到主机指定端口,所以不同的程序就能取到自己所需要的数据。“端口”是0到65535之间的一个整数,正好是16个二进制位。而0到1023的端口被系统占用,用户只能选取大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

“传输层”的功能,就是建立“端口到端口”的通信。相比之下,网络层只能“主机到主机”的通信。只要能确定主机和端口,我们就能实现程序之间的交流。

因此,Unix系统就把主机+端口,叫做“套接字”。有了它,就可以进行网络应用的开发了

2.UDP协议

我们现在必须在数据包中加入端口信息,这就需要新的协议,最简单的实现就是UDP协议,他的格式几乎就是在数据前边加上端口号。

UDP数据包,也是由“标头”和“数据”两部分构成。标头部分主要定义了发出端口和接收端口,“数据”部分就是具体的内容。然后把整个UDP数据包放入IP数据包的数据部分,而IP数据包在以太网的数据包中,所以整个以太网数据包现在就变成了这个样子:

具体的协议信息我们明天再续

学海无涯...

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5419

    浏览量

    171608
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79056
  • 大数据
    +关注

    关注

    64

    文章

    8882

    浏览量

    137403
收藏 人收藏

    评论

    相关推荐

    硬件TCP/IP协议学习笔记(第一TCP/IP协议学习一)

    1.TCP/IP族按照层次由上到下,层层包装。每一层都有自己的功能,每一层都有下一层的支持。而用户接触的,只是最上边一层,没有感觉到下面一层层,但是理解的时候要从最下层由下向上来理解。最上边是应用层,这里有http,ftp等熟悉的协议
    的头像 发表于 12-18 10:22 5493次阅读
    <b class='flag-5'>全</b><b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(第一<b class='flag-5'>天</b>:<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>学习</b>一)

    硬件TCP/IP协议学习笔记(第三TCP/IP协议学习三)

    ,并不是所有系统都对UDP数据包加以检验,但是 RFC中标准要求发送端应该计算检验和。 UDP检验和覆盖UDP协议头和数据,这和IP的检验和不一样,IP的检验和只覆盖IP数据头,并不覆
    的头像 发表于 12-18 10:26 4936次阅读
    <b class='flag-5'>全</b><b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(第三<b class='flag-5'>天</b>:<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>学习</b>三)

    硬件TCP/IP协议学习笔记(第四硬件TCP/IP协议模块学习

    /IP协议的不同归类为两大类,第一类是传统的软件TCP/IP协议
    的头像 发表于 12-18 10:27 8764次阅读
    <b class='flag-5'>全</b><b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(第四<b class='flag-5'>天</b>:<b class='flag-5'>全</b><b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>模块<b class='flag-5'>学习</b>)

    为什么会有TCP/IP协议

    协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次(不要告诉我你没用过udp玩星际)。第三层是网络层,IP
    发表于 01-05 14:52

    剖析:WIZnet以太网核心威廉希尔官方网站 –硬件TCP/IP协议

    WIZnet,是全球第一家专注于硬件TCP/IP协议威廉希尔官方网站 (iOffloadTM Tech)的
    发表于 04-09 09:44

    tcp ip协议_什么是tcp ip协议

    什么是tcp ip协议tcp ip协议详解,深刻讲述了tc
    发表于 05-14 16:29 6032次阅读
    <b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>协议</b>_什么是<b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>协议</b>

    TCP-IP协议学习教程

    TCP-IP协议学习教程解,压缩包内一共30章
    发表于 08-24 18:31 0次下载

    TCP/IP协议之路由器简要分析

    读完这个系列的第一篇浅谈TCP/IP协议(一)入门知识和第二篇浅谈TCP/
    发表于 10-10 11:46 1次下载

    Microchip TCP/IP协议

    的开发人员可以很容易找到许多Microchip产品的商业和非商业的TC P/IP实现方案。本应用笔记详细说明了Microchip公司自己免费提供的TC P/IP协议
    发表于 04-20 16:04 4次下载
     Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    Microchip的TCPIP协议的详细中文资料免费下载

    。感兴趣的开发人员可以很容易找到许多 Microchip 产品的商业和非商业的 TCP/IP 实现方案。本应用笔记详细说明了 Microchip 公司自己免费提供的 TCP/
    发表于 06-15 08:27 35次下载
    Microchip的<b class='flag-5'>TCP</b>和<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>的详细中文资料免费下载

    Microchip TCP/IP精简协议

    本应用笔记描述 Microchip 传输控制协议 / 互联网协议TCP/IP)精简协议
    发表于 04-01 15:36 17次下载
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>精简<b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    Microchip TCP/IP协议

    。感兴趣的开发人员可以很容易找到许多 Microchip 产品的商业和非商业的TCP/IP 实现方案。本应用笔记详细说明了 Microchip 公司自己免费提供的 TCP/
    发表于 04-02 14:28 22次下载
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    TCP-IP协议讲解

    TCP-IP协议讲解(嵌入式开发要学习哪些内容)-TCP-IP协议讲解,讲解了TCP的三次握手
    发表于 08-04 12:39 46次下载
    <b class='flag-5'>TCP-IP</b><b class='flag-5'>协议</b>讲解

    到底什么是TCP/IP协议,看完这篇你就明白!

    一谈到TCP/IP协议,相信不少小白都处于暴躁的边缘,只懂其一不知其。没关系,看完这篇你就知道啦!我们先简单了解下
    的头像 发表于 12-09 15:21 1436次阅读
    到底什么是<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>,看完这篇你就明白!

    Microchip TCP/IP 协议应用笔记

    电子发烧友网站提供《Microchip TCP/IP 协议应用笔记.pdf》资料免费下载
    发表于 04-17 14:16 1次下载