1,互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。把互联网分成五层,容易让人理解。

2,对这五层的理解(唐唐讲故事):

实体层:目的就是把计算机连接起来,用电气信号传输0,1

链路层:指定一套规则或方法来解析0和1。他包含一些规定,比如几个01凑一组,这一组01代表什么意思。--》最初基本上每家公司都有自己的分组方式,太乱了,这样就好比一个不懂英文的而中国人和老外对话。完全不在一个频道。这个时候一个类似语言协会的人出来了,说国际语言一英语问标准。这就是以太网。

网路层(以太网协议):把一组一组的01分组方式给规范化了。一组01构成一个数据报(帧)。每个帧都有一个头和数据  》》》》》 |head|data|

    head:里面装了一些东西,比如你是谁的,那里来的,是人是妖,到哪去。(西游记里面常说的:你是谁,是人是妖,你从哪里来,要到哪里去。我是唐三藏,从东土大唐来,到西天拜佛求经,当然他肯定是人)

    data:里面就是一写01,就好比唐三藏自己。

    这里又的说说,唐三藏说的大唐来,西天去。这里包含了一个东西,在网络里叫地址。唐三藏这个数据包要么走。这必须要让唐三藏自己带一些信息,要去西天,好的,佛祖给了经书,唐三藏就得回去,这时就得从西天回去大唐。这里的西天,大唐就是我们常常说的MAC地址。以太网规定,帧必须从一块网卡发到另一块。而地址是唯一(全世界哦48位)的,ps:所以假西天其实就是一些人常做的事情,欺骗唐唐,吃掉唐唐。

    MAC:网卡地址,用来标明数据的发送和接收地址;当然有了地址也没用,因为还需要一个大嘴巴回答妖怪,那些问题,所以唐唐的嘴巴就想个扩音器,把自己信息到处对别人说,但是并不是所有人都喜欢唐唐,因为他老说去西天,留不住,所以只有西天接收他。唐唐大嘴巴就是广播。

    广播:把自己的地址和要去的地方说明。告诉同一个子网中的计算机,我要去哪里。这里我们又不得不说,唐唐路上打妖怪,他不是那么简单就到西天的,但是他又三个徒弟啊。所以网络也有,他又ARP协议。可能有些人问,既然根据MaC地址用广播的方式进行数据传输,那为什么还要一个路由的东西(其实不要也可以,我们是可以吧两台不管位在地球哪里的两台计算机用广播的方式连接起来)。我想,这可能就有要回到唐唐了,唐唐在西游记里面对别人说西天,女儿国留他当老公,可是对每个人都说,我要去西天。烦都烦死了,类似的,如果把所有计算机都放在一个网络(除去子),那么你发个数据包,得想全世界计算机说一遍,贫僧要去西天。这要比对,还不累死,所以广播的方式只适合相对短距离构成的子网中进行。这时,路由器大神出现,把一个一个子网连接在一起。所以,数据帧发送有两种方式:广播和路由传输

    PS:MAC地址和网络地址不是一个概念,他们没啥关系。MAC地址是网卡地址,也可以说是网卡的身份证号。而网络地址是管理员随意分配给你的一个地址,我们称他为IP地址。这个你会发现,连接不同的网络IP地址会改变。身份证作用可以告诉大家我是哪个村的(IP地址也类似,标明所属子网)。

    既然身份证能够地位你是哪个村的,其实本来他就是一串数字,他是怎么做到的。原来,身份证有在公安系统做了规定,哪几位代表省份,哪几位代表市。。。。。这个就好比我们的IP地址也遵循一个规定叫IP协议。IP协议规定,ip地址由两部分组成,一个是前X位表示所属网络,后面的32-X为主机部分。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网。但是IP地址都是32位啊,谁知道你前几位表示的是子网,哪几位代表主机。这时,某个天才程序猿就想,我找个东西和他做一些操作,男女搭配,干活不累。所以,子网掩码出现了。子网掩码用来标识IP地址前几位表示的是子网,哪几位代表主机。他的原理是:用二进制的And运算。例如:172.16.254.2 子网掩码 255.255.255.0  先把IP地址化成32位2进制,然后把子网化成二进制。进行AND运算,结果是172.16.254.0。这前24位为子网地址、后8位为主机地址。

    根据IP协议发送的数据,就叫做IP数据包。不难想象,其中必定包括IP地址信息。但是前面说过,以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?回答是不需要,我们可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构。具体来说,IP数据包也分为head和data两个部分。

    head::部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。IP数据包的head部分的长度为20到60字节,整个数据包的总长度最大为65,535字节。因此,理论上,一个IP数据包的data部分,最长为65,515字节。以太网数据包的data部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。

  

学习过程参考了:阮大神的<tcp简介>

        <五层协议详解>  

    如果有错,希望大家指出。

    

tcp入门(唐唐的故事)的更多相关文章

  1. modbus tcp 入门详解

    Modbus tcp 格式说明 通讯机制 附C#测试工具用于学习,测试   前言: 之前的博客介绍了如何用C#来读写modbus tcp服务器的数据,文章:http://www.cnblogs.com ...

  2. TCP入门与实例讲解

    内容简介 TCP是TCP/IP协议栈的核心组成之一,对开发者来说,学习.掌握TCP非常重要. 本文主要内容包括:什么是TCP,为什么要学习TCP,TCP协议格式,通过实例讲解TCP的生命周期(建立连接 ...

  3. QT编写TCP入门+简单的实际项目(附源程序)

    我个人感觉学习QT不需要那么深入的了解,因为我就是编写一下界面来实现理想的功能而已,我不是靠这个吃饭,当然以后要是从事这个方向那就好好深入底层好好学了. 学习QT的TCP:第一步:去百度看看TCP的介 ...

  4. 超详细的TCP、Sokcket和SuperSocket与TCP入门指导

    前言 本文主要介绍TCP.Sokcket和SuperSocket的基础使用. 创建实例模式的SuperSocket服务 首先创建控制台项目,然后Nuget添加引用SuperSocket.Engine. ...

  5. 027.掌握Service-Ingress使用

    一 Ingress简介 1.1 Ingress 通常Service的表现形式为IP:Port,即工作在TCP/IP层. 对于基于HTTP的服务来说,不同的URL地址经常对应到不同的后端服务(RS)或者 ...

  6. TCP/IP、Http、Socket、XMPP-从入门到深入

    TCP/IP.Http.Socket.XMPP-从入门到深入 终极iOS程序猿 2016-12-29 18:27 为了便于大家理解和记忆,我们先对这几个概念进行的介绍,然后分析他们的不同,再进行详细的 ...

  7. 【Java】Java网络编程菜鸟进阶:TCP和套接字入门

    Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protoco ...

  8. 浅谈TCP IP协议栈(一)入门知识【转】

    说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...

  9. 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手

    .引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道“三次”和“四次”,但是如果问深入一点,他们往往都无法作出准确回答. 本篇文章尝试使用动画图片的方 ...

随机推荐

  1. setTimeout异步加载

    两道经典的面试题,直接上代码 for(var i=0; i<3; i++){ setTimeout(function(){ i+=i; console.log(i); },1000) } var ...

  2. GLUT Trackball Demo

    GLUT Trackball Demo eryar@163.com 1.Introduction 在三维场景中建立模型后,为了方便用户从各个角度观察模型,从而需要对三维视图进行控制.常见的视图交互控制 ...

  3. 那些日常琐事(iPhone上的细小提示,大数据分析)

         今天早上蹲坑玩手机的时候,无意间看到了iPhone 给我一些提醒,震惊了我.也许你们会说,没什么大惊小怪的,当然做程序的都知道苹果公司早就记载了我们日常生活中很多数据,只是苹果公司目前还没做 ...

  4. iOS 手势

    一.看这里 二.抽象类  UIGestureRecognizer 继承于该类的有7类:轻点,捏合,拖拽,滑动,长按,旋转,边缘滑动; 一个手势可以绑定多个事件  - (void)addTarget:( ...

  5. Dubbox中开发REST风格的远程调用

    转载: http://zyg345646335.iteye.com/blog/2208899

  6. Nginx实用教程(二):配置文件入门

    Nginx配置文件结构 nginx配置文件由指令(directive)组成,指令分为两种形式,简单指令和区块指令. 一条简单指令由指令名.参数和结尾的分号(;)组成,例如: listen backlo ...

  7. Spring事务隔离级别

    REQUIRED:业务方法需要在一个容器里运行.如果方法运行时,已经处在一个事务中,那么加入到这个事务,否则自己新建一个新的事务. NOT_SUPPORTED:声明方法不需要事务.如果方法没有关联到一 ...

  8. python 算法 -- 冒泡排序

    python 排序算法 -- 冒泡排序 原理 从数组的底部开始, 两两比较大小, 小的在下,大的在上, 依次类推直到顶部. 当整个数组比较完毕, 则最上面的一定是最大值(此即冒泡的由来); 当第一轮比 ...

  9. 表单格式化插件jquery.serializeJSON

    前言 前端在处理含有大量数据提交的表单时,除了使用Form直接提交刷新页面之外,经常碰到的需求是收集表单信息成数据对象,Ajax提交. 而在处理复杂的表单时,需要一个一个区手动判断处理字段值,显得非常 ...

  10. ORA-00245问题总结

    (1)问题描述 在进行数据库归档备份时(备份归档日志文件和控制文件),有时成功,有时失败,失败报错如下: RMAN-00571: =================================== ...