1、死也不能忘记的四个层

①数据链路层
实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。主要的协议ARP和RARP
经过数据链路层封装的数据成为帧,有以太网帧、令牌环帧,其中,以太网帧的格式:

MTU最大传输单元,即帧最多能携带多少上层协议数据(比如IP数据报),正因为如此,过长的IP数据报可能需要分片传输。
说明:以太网帧的MTU=1500,可以通过ifconfig、netstat查看,因此它携带的IP数据报的数据部分最多是1480个字节(IP数据报头部占20个字节)
②网络层
主要的协议是IP和ICMP
功能:
路由选择:通信的两台主机不是直接相连的,而是经过多个中间节点(路由器)连接,网络层的任务就是选择这些中间节点,已确定两台主机之间的通信
IP协议是根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议将会为数据包选择合适的下一跳路由器,并将数据包交付给该路由器来转发。多次重复该过程,直到数据包到达目的主机,或者由于发送失败数据包而被丢弃。可以发现,网络层的IP协议使用逐跳的方式确定通信路径。
ICMP协议(因特网控制报文协议)主要用于检测网络连接,分为两种类型:差错报文、查询报文。详细介绍看图示:

③传输层
主要协议:TCP、UDP、SCTP
功能:为两台主机上的应用程序提供端到端(end-to-end)的通信。与网络层的IP协议使用逐跳的通信方式缺人通信路径不同,传输层只关心src和dst,并不关心数据包的中转过程。

④应用层
在用户空间实现,主要协议:telnet、OSPF、DNS、ping程序等

2、TCP/IP工作原理以及流程
①封装
Q1:上层协议是如何使用下层协议提供的服务的呢?—封装
A1:应用程序的数据在发送到物理网络上之前,将沿着协议栈从上向下一次传递,每层协议都将在上层数据的基础上加上自己的头部信息。
TCP–>TCP报文段、UDP–>UDP数据报、IP–>IP数据包、数据链路层–>帧(以太网帧、令牌环帧)
说明:TCP、UDP对数据的封装类似,不同的是,UDP无需为数据保存副本,因为UDP是不可靠的服务,当UDP数据报被成功发送之后,UDP缓冲区中的该数据报就被丢弃了(如果应用程序检测到该数据报未能被接收方正确接收,并打算重发该数据包,则应用程序需要从用户空间将该数据拷贝到UDP内核发送缓冲区中)。

②分用
Q2:当帧在物理网络上传输到目的主机时,将会沿着协议自底向上依次传递,具体执行过程?—分用
A2:各层协议将依次处理帧中本层负责的头部数据,以获取所需要的信息,并最终将处理后的帧交给目标应用程序。

(从下到上)以太网帧的分用过程,图示:

可以看到:
1. IP、ARP、RARP协议都使用帧传输数据,所以帧的头部中以太网帧的类型来区分它们。IP、ARP、RARP对应的类型分别是:0x800、0x806、0x835。
2. ICMP协议、TCP协议、UDP协议都是用IP协议,所以IP数据报的头部采用16位的协议字段来区分它们
3. TCP、UDP则通过16位的端口号字段区分上层应用程序

③对等层通信
在两个端系统的同一层上,双方都有对应的一个或多个协议进行通信

https://blog.csdn.net/weixin_36750623/article/details/83956487

TCP/IP协议族体系结构:死也不能忘记的四个层的更多相关文章

  1. 服务器编程入门(1)TCP/IP协议族

    问题聚焦: 简单地梳理一下TCP/IP各层的功能和常用协议 详细了解ARP(数据链路层)和DNS(应用层)协议的工作原理 1 TCP/IP协议族体系结构 数据链路层:     职责:实现网卡接口的网络 ...

  2. Linux 高性能服务器编程——TCP/IP协议族

    1 TCP/IP协议族体系结构 数据链路层:     职责:实现网卡接口的网络驱动程序,一处理数据在物理媒介(如以太网.令牌环等)上的传输.     常用协议:ARP协议(地址解析协议),RARP协议 ...

  3. 第一章 了解TCP/IP协议族

    第一章 了解TCP/IP协议族 1.1 TCP/IP协议族体系结构以及主要协议 IP和TCP协议对编写程序具有最直接的影响,后面的章节会详细的讲到. TCP/IP的体系结构有应用层,传输层,网络层,数 ...

  4. 网络基础篇(一)--TCP/IP协议族

    TCP/IP协议族是一个分层,多协议通信体系. 1 TCP/IP协议族体系结构 TCP/IP协议族自底而上分为四层: 数据链路层, 网络层, 传输层和应用层. 1.1 数据链路层 实现网卡接口的网络驱 ...

  5. linux高性能服务器编程 (一) --Tcp/Ip协议族

    前言: 在学习swoole入门基础的过程中,遇到了很多知识瓶颈,比方说多进程.多线程.以及进程池和线程池等都有诸多的疑惑.之前也有学习相关知识,但只是单纯的知识面了解.而没有真正的学习他们的来龙去脉. ...

  6. OSI模型和TCP/IP协议族(三)

    TCP/IP协议族 TCP/IP协议族的开发要比OSI模型更早,因此TCP/IP协议族的分层结构无法准确地与OSI模型一一对应.原始的TCP/IP协议族定义为建立再硬件基础上的四个软件层,不通过目前T ...

  7. TCP/IP协议族(一)

    TCP/IP协议族(一) HTTP简介.请求方法与响应状态码 接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的. ...

  8. OSI模型和TCP/IP协议族(一)

    1990年以前,再数据通信和组网文献中占主导地位的分层模型是开放系统互连(Open System Interconnnection,OSI)模型.当时所有人都认为OSI模型将是数据通信的最终标准,然而 ...

  9. <TCP/IP原理> (二) OSI模型和TCP/IP协议族

    1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...

随机推荐

  1. ReentrantLock的实现原理及AQS和CAS

    AQS,即AbstractQueuedSynchronizer, 队列同步器,它是多线程访问共享资源的同步器框架,Java中的ReentrantLock/Semaphore/CountDownLatc ...

  2. C# Thread was being aborted

    先重现问题 1.新建一个aspx页面项目,插入两个页面WebForm1.aspx,WebForm2.aspx, WebForm1代码修改如下 protected void Page_Load(obje ...

  3. lombok的介绍、使用、简单分析和插件

    学习下Lombok. 关于POJO Java面向对象编程中的特性中有封闭性和安全性.封闭性即对类中的域变量进行封闭操作,即用private来修饰他们.如此一来,其他类就不能对该变量访问了.这样,我们就 ...

  4. scala中停止循环的三种方式

    1:使用return关键字 object BreakLoop { //1.使用return关键字 def add():Unit= { for(i <- 1 to 10){ if(i==7){ / ...

  5. RESTful API 最佳实践(转)

    原文:http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html 阮一峰老师的文章,他的文章把难懂的东西讲的易懂 RE ...

  6. golang --学习笔记 运行时间计算

    package main import ( "fmt" "time" ) func main() { start := time.Now() //do some ...

  7. 【问题记录】ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    一.问题描述 环境:MySQL 8.0 + Windows 由于密码错误或者其他原因导致无法连上MySQL服务,如下图: 二.解决方案 解决该问题的具体步骤如下: 1.关闭MySQL服务 以管理员权限 ...

  8. java8 Lambda 表达式和函数式接口快速理解

    前言 接上篇文章 java8 新特性 由于上篇过于庞大,使得重点不够清晰,本篇单独拿出 java8 的 Lambda 表达式和函数式接口说明. Lambda 表达式 lambda 表达式其实就是使用了 ...

  9. nginx 配置 server

    server{ listen 80; server_name test.eoews.cn; #项目文件的路径 root "D:/developer/study/PHPTutorial/WWW ...

  10. H5 选择图片上传及预览

    <div class="sctp"> <img src="img/sczp.png" id="photo" alt=&qu ...