注:本文摘自林海峰老师的博客,作为个人学习笔记,日后方便阅读,原文详见链接www.cnblogs.com/linhaifeng/articles/5937962.html

一.  ISO协议

       互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层:

每层运行常见物理设备:

   1. 物理层

        物理层由来:将孤立的计算机之间通过接入internet的方式联接在一起,完成组网。

物理层功能:主要是基于电器特性发送高低电压(电信号),如,高电压对应数字“1”,低电压对应数字“0”。

   2. 数据链路层       

数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号的分组方式和所表意义。

数据链路层的功能:定义了电信号的分组方式。

以太网协议ethernet:

*    一组电信号构成一个数据包,叫做‘帧’

*    每一数据帧分成:报头head和数据data两部分

head包含:(固定18个字节)

  *    发送者/源地址,6个字节(即发送机MAC地址值);

*    接收者/目标地址,6个字节(即接收机MAC地址值);

  *    数据类型,6个字节。

data包含:(最短46字节,最长1500字节)

*    数据包的具体内容。

head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送。

MAC地址: 每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)。

这样,处于同一子网内的计算机之间就可以通过基于mac广播的方式实现通信了。

   3. 网络层         

网络层由来:世界范围的互联网是由一个个彼此隔离的小的局域网组成的,如果所有的计算机之间通信都采用以太网的广播方式,那么一台 机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,会是一种灾难。所以,必须找出一种方法来区分哪些计算机属于同一广播域,哪   些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包)。

网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。

IP协议

  *    规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示;

*    范围0.0.0.0-255.255.255.255;

*     一个ip地址通常写成四段十进制数,例:172.16.10.1。

IP数据包:IP数据包也分为head(20~60字节)和data(<=65515字节)部分,无须为IP包定义单独的栏位,直接放入以太网包的data部分。

ARP协议

arp协议由来:计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要利用arp协议。

arp协议功能:以广播的方式发送数据包,获取目标主机的mac地址。

(1).  首先通过ip地址和子网掩码区分出自己所处的子网;

(2).  分析172.16.10.10/24与172.16.10.11/24是否处于同一子网络。如果是,转至步骤(3);如果不是,则转至步骤(4);

(3).   这个包会以广播的方式在发送端所处的子网内传输,所有主机接收后拆开包,发现目标ip为自己的,就单播响应,返回自己的mac;

至此,发起方利用返回mac值与目标机建立通信。

(4).   路由器收到广播数据包,发现是请求自己的mac地址,然后路由回复一个ARP单播应答,返回自己的mac;

(5).   发起方收到应答后,将网关mac地址对应于目标机ip地址,封装消息;

(6).   路由收到数据包,检查目的IP地址,发现不是给自己的,决定要进行路由。然后查询路由表,如果已有目标机mac与ip地址的映射,则直接转发过去即可;若发现没有目标机的地址映射,路由器发送arp请求查询目标机的mac地址(原理同2、3)。由此完成发起方与目标机之间的通信链路。

   4. 传输层

传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,接下来如何标识这台主机上的众多应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

传输层功能:建立端口到端口的通信,端口范围为0-65535,其中0-1023为系统占用端口。

TCP协议

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的数据部长度,以确保单个TCP数据包不必再分割。

TCP报文:

TCP三次握手与四次挥手:

UDP协议

不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好可以放入一个IP数据包的数据部分中。

   5. 应用层

应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开放的,大家都可以开发自己的应用程序,数据多种多样,必须规定数据的组织形式。

应用层功能:规定应用程序的数据格式。

例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

day01.2-计算机网络协议的更多相关文章

  1. 计算机网络协议层次(转发:http://blog.csdn.net/gavin_john/article/details/53186570)

    计算机网络学习的核心内容就是网络协议的学习.网络协议是为计算机网络中进行数据交换而建立的规则.标准或者说是约定的集合.计算机网络协议同我们的语言一样,多种多样. 为了给网络协议的设计提供一个结构,网络 ...

  2. 【转帖】计算机网络协议(三)——UDP、TCP、Socket

    计算机网络协议(三)——UDP.TCP.Socket 2019年09月04日 11:09:41 to_be_better_one 阅读数 28794 文章标签: 计算机网络UDPTCPSocket 更 ...

  3. 一些重要的计算机网络协议(IP、TCP、UDP、HTTP)

    一.计算机网络的发展历程 1.计算机网络发展 与其说计算机改变了世界,倒不如说是计算机网络改变了世界.彼时彼刻,你我都因网络而有了交集,岂非一种缘分? 计算机与网络发展大致经历如下过程:

  4. 计算机网络协议,PPP协议分析

    一.基本特点 1.PPP协议是计算机网络体系中第二层(数据链路层)的协议 2.PPP帧格式是以HDLC帧格式为基础,做了很少的改动(区别:PPP是面向字符的,而HDLC是面向位的) 3.PPP协议使用 ...

  5. 2.1.5 计算机网络协议: TCP/IP

    应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter].此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层: 应用层:由应用层提供的 HTTP 通讯协议 ...

  6. 计算机网络协议包头赏析-UDP

    之前我们已经针对以太网.IP.TCP协议,进行了包头赏析.本次,我们继续UDP协议包头赏析. 提到TCP,想必大家会有所了解,它早已是家喻户晓的一个网络协议了,而UDP远没有他的大哥那么的有名,所以, ...

  7. day01:study HTTP协议

    总结: 1.对web客户端和web服务器之间的通讯有了基本原理有了简单理解. 2.对http协议有了相关概念的建立 3.B/S C/S 两种形式 4.搭建tomcat服务器的环境,相关配置(虚拟目录 ...

  8. 计算机网络协议OSI TCP/IP协议--001

    网桥:连接同构的LAN的网络互联设备,(同构的LAN 网是,应用层到逻辑层)   实  现的功能是:MAC子层和物理层.1.帧的发送与接收.2.缓冲的管理.3.协议转换. 路由器:在网络层实现互联,他 ...

  9. 计算机网络协议包头赏析-IP

    上次和大家聊了聊以太网的帧格式,本文会讲解IP数据报格式的定义. == 开门见山,先上图: 任何一个IP数据报都是由首部和数据两部分组成,而且首部基本是固定长度的,长度为20字节.这一点很重要,其他都 ...

  10. 计算机网络协议包头赏析-TCP

    仍然先把TCP报文段的格式放在这里,然后我们看图说话: TCP报文段也分为首部和数据两部分,首部默认情况下一般是20字节长度,但在一些需求情况下,会使用“可选字段”,这时,首部长度会有所增加. 下面, ...

随机推荐

  1. hihoCoder#1121(二分图判定)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Nettle,从这个星期开始由我来完成我们的Weekly. 新年回家,又到了一年一度大龄 ...

  2. 专题练习HDU题集 图论

    [图论01]最短路 Start Time : 2018-01-02 12:45:00    End Time : 2018-01-23 12:45:00 Contest Status : Runnin ...

  3. ZOJ 4016 Mergeable Stack(栈的数组实现)

    Mergeable Stack Time Limit: 2 Seconds      Memory Limit: 65536 KB Given  initially empty stacks, the ...

  4. C++深度解析教程学习笔记(1)C到C++的升级

    1.现代软件产品架构图 比如商场收银系统 2.C 到 C++ 的升级 2.1变量的定义 C++中所有的变量都可以在需要使用时再定义,而 C 语言中的变量都必须在作用域开始位置定义. 2.2 regis ...

  5. 【273】利用ArcPy建立处理数据的脚本

    这个脚本可以直接运行处理程序,首先在 ArcPy 上面测试,成功后写入文件,下面的代码实现将指定文件夹内部的栅格数据进行 Calculate Statistics 操作,否则在进行专题图制作的时候会出 ...

  6. JavaScript的流程控制语句

    JS的核心ECMAScript规定的流程控制语句和其他的程序设计语言还是蛮相似的.我们选择一些实用的例子来看一下这些语句.顺序结构我们在这里就不再提到,直接说条件和循环以及其他语句.一.条件选择结构  ...

  7. springmvc urlpattern配置详解

    静态资源无法访问问题的解决方案: 1.使用Tomcat默认的Servlet解决:在web.xml中加以下代码

  8. 201671010127 2016—2017-2 java学习新征程

    通过大一整个学年对Python和C语言的学习,我对编程的感受有了更进一步的认识.随着时代的进步,编程语言也在实时更新,面对越来越多的编程语言,对于在编程方面的初学者,选择一门适合自己的编程语言就显得十 ...

  9. spring----AOP注解以及spring的JDBC和事务

    技术分析之:Spring框架的AOP技术(注解方式) 1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开 ...

  10. 列表控件JList的使用

    --------------siwuxie095                             工程名:TestUI 包名:com.siwuxie095.ui 类名:TestList.jav ...