注:本文摘自林海峰老师的博客,作为个人学习笔记,日后方便阅读,原文详见链接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. check: 获得所有呗选中的checked标签的元素值 mapArrayElement(arrEles)

    首先引用: <script src="../js/myjs/mapArrayElement.js"></script> 然后在<javascript& ...

  2. 蓝桥杯 算法训练 ALGO-139 s01串

    算法训练 s01串 时间限制:1.0s 内存限制:256.0MB 问题描述  s01串初始为”0”  按以下方式变换  0变1,1变01 输入格式  1个整数(0~19) 输出格式  n次变换后s01 ...

  3. mysql函数之五:group_concat mysql 把结果集中的一列数据用指定分隔符转换成一行

    函数使用说明:该函数返回带有来自一个组的连接的非NULL 值的字符串结果.其完整的语法如下 GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {un ...

  4. java数组复制的几种常见用法

    1.1数组复制的几种常见用法 1.1.1System.arraycopy的用法 int[] src = {1,3,5,7,9,11,13,15,17}; int[] dest = {2,4,6,8,1 ...

  5. python第二十三天-----Tornado

    Tornado是一个轻量级完整的web框架,在Linux系统下它会使用epoll,是一个异步非阻塞的web服务器框架,对于实时应用来说很理想,想想同是异步非阻塞的nginx的残暴程度就知道了 1.路由 ...

  6. Cassandra 学习三 数据模型

       Cassandra如何存储数据的概述. 集群(Cluster) ·Cassandra数据库分布在几个一起操作的机器上.最外层容器被称为集群.对于故障处理,每个节点包含一个副本,如果发生故障,副本 ...

  7. HDLM命令dlnkmgr详解之五_set

    set命令用来设置HDLM的操作环境及参数. set操作设置的大部分是dlnkmgr view -sys命令中显示的参数值 命令格式 dlnkmgr set { -lb on [ -lbtype { ...

  8. The R Project for Statistical Computing

    [Home] Download CRAN R Project About R Contributors What’s New? Mailing Lists Bug Tracking Conferenc ...

  9. scrapy(1)安装

    用的是python3.6 pip install -i https://pypi.douban.com/simple/ scrapy scrapy startproject Article scrap ...

  10. linux&nbsp;dev/dsp&nbsp;声卡学习笔记

    原文地址:dev/dsp 声卡学习笔记">linux dev/dsp 声卡学习笔记作者:ziyou飞翔       无论是从声卡读取数据,或是向声卡写入数据,事实上都具有特定的格式(f ...