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

    文章

    5076

    浏览量

    166235
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1271

    浏览量

    78297
  • 大数据
    +关注

    关注

    64

    文章

    8649

    浏览量

    136589
收藏 人收藏

    评论

    相关推荐

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

    1.TCP/IP族按照层次由上到下,层层包装。每一层都有自己的功能,每一层都有下一层的支持。而用户接触的,只是最上边一层,没有感觉到下面一层层,但是理解的时候要从最下层由下向上来理解。最上边是应用层,这里有http,ftp等熟悉的协议
    的头像 发表于 12-18 10:22 5143次阅读
    全<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'>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 8318次阅读
    全<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'>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

    TCP/IP网络协议

    TCP/IP网络协议TCP/IP协议是网络的基础,是Internet的语言,可以说没有
    发表于 01-05 14:54

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

    WIZnet,是全球第一家专注于硬件TCP/IP协议技术(iOffloadTM Tech)的
    发表于 04-09 09:44

    如何去简化Simplified TCP/IP协议

    Simplified TCP/IP协议的特点是什么?如何去简化Simplified TCP/IP
    发表于 05-26 07:23

    基于ARM的TCP/IP协议LwlP是如何实现的?

    嵌入式网络通信系统的硬件平台由哪几个部分组成?基于ARM的TCP/IP协议LwlP是如何实现的?
    发表于 06-04 06:37

    TCP/IP协议有何功能

    TCP/IP协议是什么?TCP/IP协议
    发表于 10-14 06:39

    TCP/IP协议连接指南

    中扮演什么角色了。文章目录ESP32 单片机学习笔记 - 07 - TCP连接一、例程实践1)建立TCP客户端 - tcp_client2)
    发表于 02-17 07:45

    TCP/IP协议简介

    TCP/IP协议简介 TCP/IP传输层协议概揽 传输控制
    发表于 06-09 23:07 1245次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>简介

    TCP/IP协议,TCP/IP协议内容和作用是什么?

    TCP/IP协议,TCP/IP协议内容和作用是什么? TC
    发表于 03-19 13:55 5695次阅读

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

    什么是tcp ip协议tcp ip协议详解,深刻讲述了tc
    发表于 05-14 16:29 5697次阅读
    <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协议(2)

    TCP/IP协议进阶课程:6、TCP协议02
    的头像 发表于 07-05 00:10 3857次阅读

    TCP-IP协议讲解

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