zoukankan      html  css  js  c++  java
  • 网络编程-TCP/IP各层介绍(5层模型讲解)

    1、TCP/IP五层协议讲解

    物理层--数据链路层--网络层--传输层--应用层

    我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议

    就理解了整个互联网通信的原理。

    首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解

    每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件

    2、物理层

    物理层由来:上面提到,孤立的计算机之间要想一起玩,就必须接入internet,言外之意就是计算机之间必须完成组网

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

    3、数据链路层(以太网协议:)

    数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思

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

    以太网协议:

    早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

    ethernet规定

    • 一组电信号构成一个数据包,叫做‘帧’
    • 每一数据帧分成:报头head和数据data两部分

    mac地址:(网卡的地址)

    head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡发送端和接收端的地址便是指网卡的地址,即mac地址

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

    广播:

    有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)

    ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼

     

    4、网络层(ip协议)

    网络层由来:有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由

    一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,

    这就不仅仅是效率低的问题了,这会是一种灾难

    必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,

    就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关

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

    4.1、IP协议:

    • 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
    • 范围0.0.0.0-255.255.255.255
    • 一个ip地址通常写成四段十进制数,例:172.16.10.1

    子网掩码:将ip地址分为网络地址和主机地址

    所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

    子网掩码是用来标识一个IP地址的哪些位是代表网络位,以及哪些位是代表主机位。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

     区分网络位和主机位是为了划分子网,把一个大网络分成多个小网络

    优点:避免广播风暴和地址浪费

    4.2、ARP协议

    arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到

    通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议

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

    协议工作方式:每台主机ip都是已知的

    例如:主机172.16.10.10/24访问172.16.10.11/24

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

    4.3、ICMP协议

    前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。

    当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会.

    我们一般主要用ICMP协议检测网络是否通畅,基于ICMP协议的工具主要有ping 和traceroute

    ping:

    ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。

    原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。

    ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到, ping给出来了传送的时间和TTL的数据。

    用来查看从当前主机到某地址一共经过多少跳路由 ------window 用命令:tracert----------linux命令:tracerout

     

     

    5、传输层(建立端口到端口的通信tcp/udp)

    传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,迅雷等多个应用程序,

    那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序呢?答案就是端口,端口即应用程序与网卡关联的编号。

    传输层功能:建立端口到端口的通信

    补充:端口范围0-65535,0-1023为系统占用端口

    传输层有两种协议,TCP和UDP,见下图

    5.1、tcp协议

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

    5.2、tcp的3次握手和4次挥手

     TCP的3次握手

    每当建立一个TCP/IP连接的时候都要经历3次握手,这是为了保证建立一个可靠的连接。

    客户端向服务器发请求,服务器接收请求,服务器接收请求之后发送一个连接标志,客户端接收连接标志之后也向服务器发送一个连接标志,至此连接完成。用打电话类比的话就是: 
    小明拨打小红的电话 
    小红按下通话键并说了声,喂 (一次握手) 
    小明听到小红的回应,也说了声,喂 (二次握手) 
    小红接收到小明的回应 (三次握手)

    TCP4次挥手

    为什么有4次挥手呢,4次挥手的作用就是断开连接,之所以要断开连接是因为TCP/IP协议是要占用端口的,而计算机的端口是有限的,所以一次传输完成之后是要断开连接的,断开连接的方式就是4次挥手。 
    连接是由客户端发起的,所以断开连接也要有客户端发起,因为服务器是被动的。上图的最后一部分就是4次挥手,还是用小明和小红打电话来类比, 
    小明:我这没事儿了,你还有事儿吗? (1次挥手) 
    小红:我也没事儿了,你确定没事儿了吗? (2次挥手) 
    小红:我要挂电话了。 (3次挥手) 
    小明:好吧,你挂吧。 (4次挥手)

     

    6、UDP协议

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

    不要建立链接,不需要对方确认,不可靠,但效率高

  • 相关阅读:
    53. Maximum Subarray
    64. Minimum Path Sum
    28. Implement strStr()
    26. Remove Duplicates from Sorted Array
    21. Merge Two Sorted Lists
    14. Longest Common Prefix
    7. Reverse Integer
    412. Fizz Buzz
    linux_修改域名(centos)
    linux_redis常用数据类型操作
  • 原文地址:https://www.cnblogs.com/ellisonzhang/p/10403311.html
Copyright © 2011-2022 走看看