注:本文摘自林海峰老师的博客,作为个人学习笔记,日后方便阅读,原文详见链接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. 学习vue

    一,声明模板的时候需要新建示例 如下代码 <div id="app"> <my></my> </div> Vue.component ...

  2. oralce 记一次 External Procedure initial connection 处理

    1 环境 oracle 11.2.0.4 RAC(2 nodes),centos 6.8,实体机 2 问题 线上环境执行一条sql sql> select ST_AsText(ST_Geomet ...

  3. 对runtime的总结:让你会用Runtime

    导语Runtime,简称运行时,就是系统在运行的时候的一些机制,其中最主要的是消息机制,是一套底层的纯C语言的API,我们平时所编写的OC代码,在程序的运行过程中都转成了runtime的代码,平时调方 ...

  4. Java 的标识符

    标识符: 在写代码的时候为了增强代码的阅读性会自定义很多名字,如:类名.方法名.变量名等 这种名称成为标识符 标识符命名规则: 由字母(可以是中文).数字.下划线.$ 组成,但不能以数字开头 大小写敏 ...

  5. 关于多账套API的设计

    帐套在财务核算中是记载一个独立核算的经济实体的所有往来信息的一整套记录表和统计分析报表.不同的帐套之间的关系是相对独立的,对其中的任何一个帐套中的数据进行建立.删除或修改都不会影响其他帐套.在ERP中 ...

  6. 1107SQLserver基础--语句、存储过程

    [随堂练习]--查询‘李数’老师教的数学成绩大于80分的学生的信息, 并且人数大于3的话,输出达标:否则输出不达标. 存储过程 --带参数的程序代码块---代表执行命令存储在数据库中,存储代码,没有调 ...

  7. LNMP 1.1 php编译安装

    LNMP 是 Linux nginx mysql php  nginx和apache一样也是一种web服务.在静态web服务中nginx更胜一筹.在动态中不比apache有优势. LNMP的mysql ...

  8. java线程游戏之背景图片的移动

    package com.plane; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; im ...

  9. html标签的显示模式(块级标签,行内标签,行内块标签)(转)

    html标签的显示模式(块级标签,行内标签,行内块标签)   今天讲课的时候,讲到了html中的标签的显示模式,大致分为块级标签和行内标签.那么初学者在刚使用标签的时候会发现有些属性在一些标签上不起作 ...

  10. ArcGIS Field Type /esriFieldTypeDate(转)

    ArcGIS Field Type   The following table outlines the equivalent field data types in ArcCatalog, ArcO ...