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

    Happy 2006 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 11458   Accepted: 4001 Descr ...

  2. FLASH和EEROM使用【转】

    最近在看代码的时候,遇到了一个使用FLASH模拟EEPROM的情况,看到这个我当时是一脸蒙蔽啊,对于一个有时候连FLASH和EEPROM都分不清的人来说,怎么可能读懂用FLASH来模拟EEPROM呢? ...

  3. 人脸检测学习笔记(数据集-DLIB人脸检测原理-DLIB&OpenCV人脸检测方法及对比)

    1.Easily Create High Quality Object Detectors with Deep Learning 2016/10/11 http://blog.dlib.net/201 ...

  4. Resque基本

    原文:http://www.cnblogs.com/rywx/archive/2012/05/26/2519615.html Resque resque是基于redis的后台任务组件,能把任何类或模块 ...

  5. JCTF 2014(Reverse)

    小菜一碟: 点击下载附件 下载的附件没有后缀,用c32打开看看 是apk文件,用Smali2JavaUI打开 程序把输入框的字符串反转,然后进行MD5加密,最后进行base64编码,与NzU2ZDJm ...

  6. rsync mac->windows openssh

    rsync -azvP --progress -e "ssh -p 6666" /Users/codar/360\344\272\221\347\233\230/ghld/ rsy ...

  7. javascript——作用域与闭包

    http://www.cnblogs.com/lucio-yr/p/4047972.html 一.作用域: 在函数内部:用 var 声明的表示局部变量,未用var的是全局变量. 作用域取决于变量定义时 ...

  8. 监控和安全运维 1.6 nagios监控客户端-2

    6. 继续添加服务服务端 vim /etc/nagios/objects/commands.cfg 增加: define command{ command_name check_nrpe comman ...

  9. fluent仿真数值错误

  10. Oracle merge into 语句进行insert或者update操作,如果存在就update,如果不存在就insert

    merge into的形式:    MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] ...