【内容摘要】1.前言本文用于介绍tcp/ip协议的最基本内容,十分简单,也十分基本,如果希望了解详细的内容,请参阅其它资料,这只是给初学者用的。2.tcp/ip介绍tcp/ip通常指的是关于tcp和ip的任何东西,它是一个统称,它既可以包括其它协议,其它应用程序,还可以包括网络介质。2.1基本结构为了理解这个技术,最好称理解下图:这个结构存在于internet中计算机之中,它决定了计算机在网络上……
-----------------------------------------------------------------------------

  1. 前言
  
  本文用于介绍tcp/ip协议的最基本内容,十分简单,也十分基本,如果希望了解详细的内容,请参阅其它资料,这只是给初学者用的。
  
  2. tcp/ip介绍
  
  tcp/ip通常指的是关于tcp和ip的任何东西,它是一个统称,它既可以包括其它协议,其它应用程序,还可以包括网络介质。
  
  2.1 基本结构
  
  为了理解这个技术,最好称理解下图:
  
 

  这个结构存在于internet中计算机之中,它决定了计算机在网络上的动作。
  
  2.2 名词
  
  数据块的名称会因为它处于不同的协议栈而不同。这里给出一个总结:在以太网时,它称为一个以太网帧,在ip上时,它称为ip包,如果数据在ip和upd之间一般称为udp数据报,而数据如果在ip和tcp之间,则称为tcp段(或消息),而数据在应用程序中时,则称为应用程序消息。这种定义不是绝对的,不同的文章会有不同的说法。
  
  2.3 数据流
  
  数据流从应用程序流向tcp或udp,我们通常知道的ftp是应用tcp协议的,而snmp协议却是使用udp协议的。数据由不同协议模块流向同一个以太网适配器。由适配器将数据传送到网络介质上去。上面的过程在接收方反向发生。
  
 

  以太帧传送到arp或ip模块中,而以太帧中的数据决定此数据是由ip还是由arp处理。如果是供ip处理的包,则由ip模块直接传送给tcp或upd,具体传送给谁这由ip包头决定。而udp包内的数据决定了应该由upd协议上层的哪一个应用程序接收这个数据,这一点和tcp是一致的。数据在从应用程序下传到网络时,过程比较简单,各层把在数据上加入自己的包头信息,然后传送给下一层就行了。虽然internet支持多种网络介质,但是一般我们都拿以太网范例。这里我们需要记住的是以太地址是唯一的,全球唯一的。计算机同时也拥有一个四个字节的ip地址,这个地址用于标记ip模块的地址,但对于internet来说,ip地址不见得是唯一的。一台运行着的计算机通常知道自己的ip地址和以太地址。
  
  2.4 两个网络接口
  
  下图中一台计算机连接了两个以太网。
  
 

  请注意:上图中的计算机拥有两个ip地址和以太地址。这时ip模块将对应于多个物理适配器。
  
 

  多个ip模块对应多个物理适配器时,情况要复杂一些。
  
 

  上图说明了ip转发的过程,专用于转发ip包的计算机我们称为ip路由器。从上图中我们可以看出,ip转发的时候根本不需要tcp和udp,所以有些ip路由器的实现中根本没有tcp和upd模块。
  
  2.5 ip创建信号逻辑网络
  
  数据在从应用程序向网络介质传送的过程中,被各种协议加上包头,而由网络介质向应用程序传送时,这些加入的包头被一个个取消,而ip层加入的信息构成了一个逻辑网络,这个逻辑网络是相对于多个物理网络而言的。多个物理网络相互连接,就是我们现在经常听到的internet的由来。
  
  2.6 物理网络独立性
  
  ip将下层的网络结构对上层的应用程序隐藏起来,如果您发明了一种新的网络,您只需要实现一种驱动程序,让它能够和ip进行通信就可以使您的网络连接入internet。
  
  2.7 互连性
  
  如果internet上的两台计算机能够进行通信,我们称它们互连了。我们的计算机一般都具有互连性,因此我们购买的计算机一般都可以在网络上相互通信。
  
  3. ethernet
  
  下面我们看看以太技术,一个以太帧包括源地址,目的地址,类型域和数据。一个以太地址6个字节,每个以太适配器都有唯一的以太地址,而地址"ff-ff-ff-ff-ff-ff"代表一个广播地址。以太网使用csma/cd技术,这个技术使设备共享一条传输介质,某一时刻只能一台设备传送数据,如果两台同时传送就会产生冲突,而解释这种冲突的办法就是两个设备停一会儿(一个随机的时间)再传送数据。
  
  我们可以把以太技术想成许多人在一个黑屋子里说话,如果每次只有一个人说,那么对这个话感兴趣的人就会听到,记录下来,而不感兴趣的人就不管它就是了。如果两个人同时说,两个人就会听到自己在说话的时候还有另外一个人也在说,于是就停下来,过一会儿再说,这样来达到传送消息的目的。这里需要注意的是,屋子里的每个人有一个唯一的名字,这个名字就是以太地址,而如果某个人想对所有人说话,它就应用那个广播地址传送消息就可以了。
  
  4. arp
  
  arp是为了解决ip包发出后,目的以太地址如何确定的问题。arp是用来将ip地址解释为以太地址的协议,这个协议只对由ip传出的数据有用。
  
  4.1 arp地址翻译表
  
  这个翻译的过程中通过查询一张表进行的,每个机器的ip地址和以太网卡号就在这个表中,如果我想向一个ip地址发送消息,只需要查询一下这张表,知道目的以太地址是什么就可以了。下面就是一张这个的arp表:
  
 

  ip地址在机器内部是一个4字节数,而人类的表示是如上表中的表示方法,这种方法称为点为十进制。这种翻译表是必须的,因为ip地址的选择和以太地址的选择是独立进行的。以太地址是生产厂商根据分配给它的地址空间直接烧结在网卡上的。
  
  4.2 经典的翻译过程
  
  在通常网络操作进行时,应用程序发送消息到tcp(或udp),由tcp(或udp)传送消息到ip模块,目的ip地址是已知的,在将这个包传送到以太适配器时一定要查找这个翻译表知道目的以太地址是什么。而这时arp就管用了。
  
  4.3 arp请示/响应对
  
  但是,arp表如何从空变得那么充实呢?这是由arp协议来完成填充工作的,它工作的基本过程是“需时再取”的原则。当arp不能用于查询以太地址时,会发生下面两件事情:
  
  1. arp用以太广播地址发送一个以太包到网络上,所有的计算机都会接收到这个包;
  
  2. 将需要发送的ip包放入发送队列中;
  
  发出的那个以太包就象一个问路的人一样,它带有如下信息:“如果您的ip地址和我想找的ip地址一样,请告诉我您的以太地址”,下面是一个arp请示包的例子:
  
 
  表2. arp请示包例子

  
  每台计算机的arp模块检查自己的ip地址是不是和这个包内的ip地址一致,如果不一致,就什么也不干,如果一致,则返回一个响应,其中包括的信息指出了这个ip地址的以太地址。下面是一个响应包的例子:
  
 
  表3. arp响应包例子

  
  这个响应由原来发出请求的计算机接收,arp就将相应的ip地址和以太地址加入arp表中,这个过程不断地发生,这个表也就不断地加大了,更新过的arp表如下图所示:
  
 
  表4. 更新后的arp表

  
  这个请求与响应的过程十分迅速,放入队列的ip包现在可以取出发送了,因为所需要的以太地址已经有了,可以发送了。如果没有目的主机,发出的请求就不会有回应,ip层抛弃需要发送的ip包,而上层协议也不清楚是网络断了,还是不存在目的主机,ip层不负责报告错误类型。
  
  5. internet协议
  
  ip模块是internet技术的核心,而它的路由技术是它成为核心的基础。了解路由需要也解互连是什么。
  
  <font color="orange">5.1 直接路由
  
  下图是一个只有三台计算机的小网络,每台计算机有运行一个tcp/ip协议栈,每个计算机配有以太适配器,每个计算机都被指定一个独立的ip地址。
  

  当a发送ip包到b时,ip包头包括a的ip地址(这是源地址)和a的以太地址(这是源以太地址);同时这个包也包括b的ip地址和以太地址作为目的地址。
本贴来自天极网群乐社区--http://q.yesky.com/group/review-17641033.html

TCP/IP协议新手入门学习相关推荐

  1. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  2. Linux内核网络栈1.2.13-有关tcp/ip协议的基础入门

    参考资料 <<linux内核网络栈源代码情景分析>> Linux内核网络栈的基础内容 主要分析tcp/ip相关的基本构成,概述了socket的系统调用进入内核的一个流程,并了解 ...

  3. TCP/IP协议学习(五) 基于C# Socket的C/S模型

    TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...

  4. TCP/IP协议学习笔记

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  5. 《TCP/IP详解》学习笔记(三):IP协议、ARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP 协议用来找到目标主机的 Ethernet 网卡 Mac 地址,IP 则承载要发 送的消息.数据链路层可以从 ARP 得到数据的传送信息,而从 ...

  6. TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP

    TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP 1. 命令ping的用法和解析 1.1 ping 的用法 1.2 TTL 是什么? 1.3 SEQ是什么? 2.ICMP协议 2. ...

  7. tcp ip 协议 学习

    tcp ip 协议学习. linux 内核版本 : 3.18.48 主题: 由于只关心 传输层和网络层这2层 ,所以TCP/IP是重点. 从哪里开始? 从下往上还是从上往下 ?  思考良久 还是从 T ...

  8. TCP/IP协议学习笔记(二)

    工程建立: 先建Project然后添加module和package,如图所示: 代码编写: 首先代码中会出现中文字符,所以要在代码中添加#coding utf-8,避免出现乱码. 然后明确TCP/IP ...

  9. Python Web学习笔记之TCP/IP协议原理与介绍

    HTTP.FTP.SMTP.Telnet等等协议,哦!那个HTTP协议啊就是访问网页用的那个协议啊然后那个······其实······你懂得,我们应该从实际来了解他,理解网络协议的作用与功能,然后再从 ...

  10. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

最新文章

  1. Thinkphp5 用ab压力测试工具测试高并发请求
  2. Yii学习笔记:利用setFlash和runController打造个性化的提示信息页面
  3. [云炬创业基础笔记]第十一章创业计划书测试6
  4. 硬盘参数你都懂吗?(上)-从案例引发的讨论
  5. linux 端口方法防火墙,Linux 打开端口方法(防火墙操作)
  6. 240多个jQuery插件 (转)
  7. 你还不知道Redis 高延迟时发生了啥嘛?
  8. 如何限制创建子网站时只能使用指定的模板
  9. 依赖注入(Dependency Injection)框架是如何实现的?
  10. 将自己的dcm数据制作成LUNA16数据集提供数据样式之代码整理
  11. 强连通图------(1)通过两次DFS或BFS判断是不是强连通图
  12. 什么叫服务器加密狗信息异常,加密狗不能识别,只是服务器能用,客户端提示到期,是什么原因,已经换了口,也重启过电脑了。...
  13. DKMS(大开门是什么意思)
  14. 股权-公司治理的至高点,如何合理运用股权(融人、融资、融市场) 张明若
  15. 华中农业大学python实验题
  16. 网络游戏源代码分析_为您的游戏选择正确的网络代码
  17. python如何捕获指定异常_如何捕获Python中的异常
  18. Go语言安装和配置SDK
  19. VsCode插件安装及推荐
  20. Java同步技术(十)

热门文章

  1. MATLAB 常用语法、函数
  2. 计算机科学系绩效分配方案,山西大学计算机与信息技术学院岗位绩效实施方案.docx...
  3. 新版谷歌开启flash的方法
  4. 服务器怎么开启lldp协议,修改服务器lldp的mac地址
  5. 2022-2028年中国光纤放大器行业市场发展潜力及投资策略研究报告
  6. Spring Security 原理
  7. Verilog 实现四选一选择器
  8. c/c++ utf-8与gbk的互相转化
  9. js调用数科阅读器_多种方式实现JS调用后台方法进行数据交互
  10. ubuntu 旺旺_Ubuntu 下通过Wine安装阿里旺旺并解决中文乱码