tcp入门(唐唐的故事)

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简介>

        <五层协议详解>  

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

    

时间: 2024-10-10 23:47:16

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

Java TCP入门例子

TCP套接字 Java为TCP协议提供了两个类:Socket类和ServerSocket类.一个Socket实例代表了TCP连接的一端.一个TCP连接是一条抽象的双向信道,两端分别由IP地址和端口号确定. TCP客户端 典型的TCP客户端要经过下面三步: 1.创建一个Scoket实例:构造函数向指定的远程主机和端口建立一个TCP连接. 2.通过套接字的输入输出流(I/O streams)进行通信:一个Scoket连接实例包括一个InputStream和一个OutputStream,它们的用法同于

TCP入门与实例讲解

内容简介 TCP是TCP/IP协议栈的核心组成之一,对开发者来说,学习.掌握TCP非常重要. 本文主要内容包括:什么是TCP,为什么要学习TCP,TCP协议格式,通过实例讲解TCP的生命周期(建立连接.传输数据.断开连接) TCP简介 传输层控制协议(Transport Control Protocol),TCP/IP协议栈的核心之一.位于应用层与网络层之间,提供面向连接的.可靠的字节流服务. 记住关键词"面向连接"."可靠"."字节流",这是学

socket 网络编程快速入门(一)教你编写基于UDP/TCP的服务(客户端)通信

因为UNIX和Win的socket大同小异,为了方便和大众化,这里先介绍Winsock编程. socket 网络编程的难点在入门的时候就是对基本函数的了解和使用,因为这些函数的结构往往比较复杂,参数大部分都是结构体,令人难以记忆和理解. 但是一旦我们知道这些函数包括其参数的具体含义,socket网络编程也就变得不是那么复杂.这里不赘述 具体函数的详细含义,网络上有很多的文章,同时笔者建议大家参考 MSDN,对返回值,参数等会有更好的理解. 以下均为单线程的简单实例,多线程的请关注下一篇文章. (

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

TCP/IP.Http.Socket.XMPP-从入门到深入 终极iOS程序猿 2016-12-29 18:27 为了便于大家理解和记忆,我们先对这几个概念进行的介绍,然后分析他们的不同,再进行详细的分析. 一.TCP/IP简介 IP协议是网络层,TCP协议是传输层,HTTP协议是应用层,socket是对TCP/IP协议的代码封装和应用. TPC/IP 主要解决数据如何在网络中传输,HTTP主要解决如何包装数据. TCP/IP协议用来传输数据,应用层协议 使传输的数据有意义,应用层协议有很多,比

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

Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)这两个数据传输协议的支持.本文开始探讨 TCP. TCP 基础知识 在“服务器-客户端”这种架构中,服务器和客户端各自维护一个端点,两个端点需要通过网络进行数据交换.TCP 为这种需求提供了一种可靠的流式连接,流式的意思是传出和收到的数据都是连续的字节,没有对数据量进行大小限制.

socket 网络编程高速入门(一)教你编写基于UDP/TCP的服务(client)通信

由于UNIX和Win的socket大同小异,为了方便和大众化,这里先介绍Winsock编程. socket 网络编程的难点在入门的时候就是对基本函数的了解和使用,由于这些函数的结构往往比較复杂,參数大部分都是结构体,令人难以记忆和理解. 可是一旦我们知道这些函数包含其參数的详细含义,socket网络编程也就变得不是那么复杂. 这里不赘述 详细函数的详细含义.网络上有非常多的文章.同一时候笔者建议大家參考 MSDN.对返回值,參数等会有更好的理解. 下面均为单线程的简单实例,多线程的请关注下一篇文

Android基础入门教程——7.6.3 基于TCP协议的Socket通信(2)

Android基础入门教程--7.6.3 基于TCP协议的Socket通信(2) 标签(空格分隔): Android基础入门教程 本节引言: 上节中我们给大家接触了Socket的一些基本概念以及使用方法,然后写了一个小猪简易聊天室的 Demo,相信大家对Socket有了初步的掌握,本节我们来学习下使用Socket来实现大文件的断点续传! 这里讲解的是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用 就好! 1.运行效果图: 1.先把我们编写好的Socket服务

Android基础入门教程——7.6.2 基于TCP协议的Socket通信(1)

Android基础入门教程--7.6.2 基于TCP协议的Socket通信(1) 标签(空格分隔): Android基础入门教程 本节引言: 上一节的概念课枯燥无味是吧,不过总有点收获是吧,本节开始我们来研究基于TCP协议的Socket 通信,先来了解下Socket的概念,以及Socket通信的模型,实现Socket的步骤,以及作为Socket服务 端与客户端的两位各做要做什么事情!好的,我们由浅入深来扣这个Socket吧! 1.什么是Socket? 2.Socket通信模型: Socket通信

TCP/IP协议-入门

Life is not a rehearsal "人生没有彩排" 参考资料:TCP/IP入门经典 (第五版) TCP/IP详解 卷一:协议 一.什么是TCP/IP TCP/IP是一族定义了网络数据传输规则的协议,现在大多数的网络设备都使用TCP/IP协议进行通信 二.TCP/IP分层 1.分层 应用层 传输层 网络层 数据链路层 2.各层的主要功能 ● 数据链路层:处理通信电缆与接口的细节,将网络层传来的IP数据报转化为帧,再转化为比特流,使其能在通信介质之间传输 ● 网络层:提供逻辑