TCP/IP网络模型的目的是什么呢?

为了应用不同设备之间的通信,我sdf们就需要一套通用的网络协议,就是TCP/IP网络模型。

如下图1所示:

图1 TCP/IP的四层协议

应用层

应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指我们手机电脑里运行的程序。不同的网络有不同的应用层协议,比如应用层协议有:域名系统DNS协议、FTP文件传输协议、、telnet远程终端协议、HTTP超文本传送协议、SMTP电子邮件协议、POP3邮件读取协议、Telnet远程登录协议、SNMP简单网络管理协议等。那么应用层交互的数据单元就被称为报文

应用层不用关心数据是如何传输的,只需要将报文传给下一层:运输层。

运输层

传输层的任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传输应用层报文。

运输层可以传输多个不同的应用层进程数据,也可以将运输层的数据交付给多个不同的应用层进程,所以运输层有复用分用的功能。

运行层主要有两个传输协议,分别是TCP和UDP。

TCP(Transmission Control Protocol)传输控制协议——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段

UDP(User Datagram Protocol)用户数据报协议——提供无连接的、尽最大努力的数据传输服务(不保证数据的可靠性),其数据传输的单位是用户数据报

应用需要传输的数据可能非常大,如果直接传输就不好控制,因此当运输层的数据包大小超过MSS(TCP最大报文段长度),就要将数据包分块,这样如果有一个块丢失,只需要重新传这个块,而不用重新发送整个数据包。其中,每个分块称为一个TCP报文段(segment)。

当设备作为接收方时,运输层则要负责吧数据包传给应用,但是一台设备上可能会有很多应用在接受或者传输数据,因此需要一个编号将应用区分开来,这个编号叫做端口。比如80:web服务器,22:远程登录服务器。

因为传输层(运输层)的报文中会携带端口号,因此接收方可以识别该报文时发送给那个应用的。

网络层

网络层负责分组交换网上的不同主机提供通信服务。在发送数据是,网络层把运输层产生的报文段tcp或者用户数据报udp封装成分组或包进行传送。在TCP、IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据

IP协议会将传输层的报文作为数据部分,在加上IP报头组装成IP报文,如果IP报文大小超过MTU(以太网中一般为1500字节)就会再次进行分片,得到一个即将发送到网络的IP报文。                                                                                                                                                    网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。

那么如何找对对方呢?,因此网络层使用ip地址给设备进行编号,对于IPv4xieyi ,地址共有32位,分成了4端,比如193.168.100.1,每段时8位。 地址虽然区别了设备,但是如果找到对方呢?

因此,IP地址分成了两种意义:

  • 一个是网络号,负责表示该IP地址属于哪个子网的;
  • 一个是主机号,负责标识同一子网下的哪个主机的;

这就需要配合子网掩码才能算出IP地址的网络号和主机号。

图2 根据子网掩码求网络号和主机号

那么在寻址的过程中,先匹配相同的网络号(标识要找到同一个子网),才会去找对应的主机。

除了寻址能力,IP协议还有另一个重要的能力就是路由。实际场景中,两台设备并不是用一条网线连接起来的,而是通过很多网关、路由器、交换机等众多网络设备连接起来的,那么就会形成很多条网络的路径,因此当数据包到达一个网络节点,就需要通过路由算法决定一下不走哪条路径。

所以,IP协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据下一个目的地选择路径。寻址更像在导航,路由更像在操作方向盘。

网络接口层

生成IP头部后,接下来要交给网络接口层在IP头部的前面机上MAC头部,并封装成数据帧发送到网络上。

IP头部的接收方IP地址表示网络包的目的地,通过这个地址我们就可以判断要将包发到哪里,打在以太网的世界中,这个思路是行不通的。

电脑上的以太网接口,WIFI接口,以太网交换机、路由器的千兆、万兆以太网口还有网线,它们都是以太网的组成部分,以太网就是一种在局域网内,把附近的设备连接起来,使他们之间可以进行通讯的技术。

以太网在判断网络包目的地时和IP的方式不同,因此必须采用相匹配的方式才能在以太网中将包发往目的地,而MAC头部就是发挥该作用的,所以,在以太网中进行通讯需要用到MAC地址。

MAC头部是以太网使用的头部,它包含了接收方和发送方的MAC地址信息,我们可以通过ARP协议获取对方的MAC地址。

所以说,网络接口层主要为网络层提供「链路级别」传输的服务,负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备。

总结

TCP/IP的四层结构分别是应用层、运输层、网际层(IP层)、网络接口层,应用层是应用进程间通信和交互的规则,运输层时负责向两台主机中进程之间的通信提供通用的数据传输服务,网络层时负责为分组交换网上的不同主机提供通信服务和选择合适的路由,网络接口层是为网络层提供链路级别传输服务,使用mac地址来标识网络上的设备。

它们每层都封装了不同的数据。如图3所示:

图3 TCP/IP四层模型的数据封装格式

应用层的数据单元称为报文;运输层的数据称为TCP->报文段,UDP->用户数据报;网际层的数据称为IP数据报或者数据报,网络接口成的传输单位时帧。 它们可以统称为数据包。

【TCP/IP网络模型】TCP/IP网络模型的四层结构相关推荐

  1. 详解OSI七层网络模型 TCP/IP四层模型

    @TOC这里对OSI七层网络模型和TCP/IP四层模型及其下的各层和TCP协议的设计核心做出总结供大家参考,如有错误欢迎指出讨论! OSI七层网络模型 & TCP/IP四层模型 OSI七层模型 ...

  2. 网络模型——TCP/IP模型

    应用层:程序相关一层. 协议层(传输层): 端口号:知名端口号:0~1023 例:FTP 21 SSH 22 HTTP 80 HTTPS 443 DNS 53 自定义端口号:1024~65535 My ...

  3. 【TCP/IP】TCP/IP 四层分别有哪些协议|OSI四层/五层/七层协议

    五层协议模型 应用层:http dns TFTP .Telnet .FTP.SMTP.NFS.Rlogin. SNMP(UDP)-- 传输层:TCP.UDP 网络层: ICMP(ping tracer ...

  4. scrapy ip地址 tcp time out_TCP的运作流程(一)——“三次握手”

    前言 看过前面有关两篇HTTP的文章的同学,想必对HTTP已经有了一定的了解.在HTTP初始(一)中提到过TCP/IP四层网络模型,这次我们就来详细了解一下TCP传输.因为时间和篇幅所限,本篇讲分为两 ...

  5. TCP/IP是什么,什么是TCP,什么是IP,和HTTP有什么区别

    参考内容: http://baike.baidu.com/link?url=6Rsx0yRJY8cHN4B0kFlMjkDl23XUtqxo6aziAxbH2eaLwCxUUxMy-2IjHHCiQI ...

  6. TCP、UDP、IP 协议分析

    http://blog.chinaunix.net/uid-26833883-id-3627644.html 互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如:不能互连不同 ...

  7. 了解TCP协议,IP协议、ICMP协议和ARP协议(TCP报文,TCP的分成管理,TCP与UDP,TCP的三次握手四次挥手原理)

    文章目录 了解TCP/IP协议 TCP报文格式 TCP/IP 的分层管理 TCP与UDP TCP的三次握手与四次挥手 为什么要三次握手? 为什么要四次挥手? IP数据包格式 ICMP协议 ICMP协议 ...

  8. TCP/IP 和 TCP/IP的 三/四次握手

    什么是TCP/IP 首先来说,TCP/IP协议是浏览器与服务器链接因特网的协议.浏览器使用TCP/IP协议进入服务器,服务器使用TCP/IP协议来发送HTML文件到浏览器. TCP/IP的作用 TCP ...

  9. TCP/IP网络协议栈:以太网数据包结构、802.3、MTU

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

最新文章

  1. python读取json文件报 No JSON object could be decoded
  2. POJ 3278 Catch That Cow BFS
  3. centos mysql 设置_CentOS下MySql优化及安全设置centos
  4. 基于认证的代理平台搭建配置squid-20130730
  5. Technical news July-11
  6. 苍狼敏捷需求用例分析方法简介并讲义下载
  7. 微信能远程控制电脑吗_神器分享:用微信就能远程控制电脑,这款神器有些厉害...
  8. python实现8大排序算法
  9. matlab虚拟现实之V-Realm Builder2使用NavigationInfo精确定位、建模
  10. [转载] python异常和错误有什么区别_python的错误和异常
  11. 安装emmet时pyv8下载失败
  12. 仓储系统货位优化毕业论文【Flexsim仿真】
  13. 《青春依然,再见理想——献给学弟学妹》大四学生的万字忏悔书,警示学弟学妹...
  14. 南京大学比中科大计算机与科学专业,教育部直属:16所“软件工程”专业强校,浙大、南大、中科大上榜...
  15. 关于第三方App发起Unity开发的app的解决方案
  16. 遇到的文件从本地上传HDFS失败
  17. 计算机仿真工具软件,计算机仿真技术
  18. Tomcat两个项目,一个可以正常访问,另一个报错404
  19. vscode 修改快捷键 (回到上一处光标位置,下一处光标位置)
  20. 使用Visual Studio快速搭建网站

热门文章

  1. [小黄书小程序]导航栏和标题栏界面
  2. 基于Simulink雷达系统建模仿真(附源码)
  3. 详细介绍zip、rar、7z的不同以及优势
  4. 情感驿站 | 大学生应该明白的事情
  5. IT专业人士的最佳云安全认证
  6. 有关john所用字典文件
  7. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第29讲:PHP排序和查找
  8. 打印机已连接到无线AP但是安装驱动时找不到打印机
  9. bzoj2150 部落战争 二分图匹配
  10. 2019最新Python从入门到精通之30天快速学Python项目实战(完整)