面试突击67:说一下 TCP/IP 协议?以及每层的作用?

TCP/IP 包含四层模型,从上层往下层分别是:应用层、传输层、网络层、数据链路层。有些资料也会说 TCP/IP 是五层模型,所谓的五层模型指的是在数据链路层下面还有一个物理层,而作为软件工程师一般不需要关注物理层,所以通常我们说 TCP/IP 四层模型更多一些。

1.应用层

应用层的作用是负责应用程序间的数据通讯的。 不同的网络应用需要不同的应用层协议,比如电子邮件传输 SMTP 协议、文件传输 FTP 协议、网络远程访问 Telnet 协议等等。

应用层的常见协议有以下两个:

  • DNS 域名解析协议(Domain Name System,域名系统),DNS 是将域名和 IP 做一个映射,因为在程序间通讯依靠的是 IP,但 IP 地址不方便记忆,而域名方便记忆,所以将二者作为一个 key-value 映射在一起,这样知道了域名置换就能找对与之相对应的 IP 了,这样既能方便用户记忆,同时又能满足程序间的数据通讯。
  • HTTP 协议(HyperText Transfer Protocol,超文本传输协议),互联网上应用最为广泛的一种网络协议。所有的 WWW(万维网) 文件都必须遵守这个标准。

2.传输层

传输层的主要作用是负责两台主机间的数据传输的。 如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。

注意:应用层和传输层描述的主体对象是不同的,应用层描述的主体是”应用程序间”,而传输层描述的主体是”两台主机间”。其中,一个主机可以包含多个应用程序,所以二者是不同的。

传输层的常见协议有以下两个:

  • TCP 协议(Transmission Control Protocol,传输控制协议):提供了稳定的、需要连接的、面向字节流的协议。
  • UDP 协议(User Datagram Protocol,用户数据协议):提供了无连接的、不稳定的、面向数据报的协议。

3.网络层

网络层的作用是负责网络上的地址管理和路由选择的。 在数据通讯时,可以选择很多条路径(抵达目的地的),比如从西安到北京,可以选择先从西安 -> 太原 -> 北京,也可以选择从西安 -> 郑州 -> 石家庄 -> 北京,还可以选择从西安 -> 延安 -> 呼和浩特 -> 张家口 -> 北京,究竟选择那一条路呢?这就是网络层负责的。

4.数据链路层

数据链路层的作用是负责设备之间的数据帧的传送和识别的。 数据在传输时需要经过多个设备进行数据传输,而数据链路层就是负责相邻设备间的数据传输和识别的。
数据链路层可以完全消除网络层和物理层之间的不同,将数据在链路层进行有效的识别和传输。

5.物理层(可选)

物理层的作用是负责将数据转换成信号,再将信号转换为数据的。 转换方法因通讯媒体不同而不同,所以没有特定的协议。

TCP/IP 包含了五层(或四层)模型,从上层往下层分别是:

  • 应用层:负责应用程序间的数据通讯。
  • 传输层:负责两台主机之间的数据传输。
  • 网络层:负责网络地址的管理和路由选择。
  • 数据链路层:负责设备之间的数据帧的传送和识别。
  • 物理层(可选):负责数据和信号间的转换。

Original: https://www.cnblogs.com/vipstone/p/16504912.html
Author: Java中文社群
Title: 面试突击67:说一下 TCP/IP 协议?以及每层的作用?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539336/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Docker安装容器示例

    1.以mysql为例 ,搜索镜像 2.下载镜像 3.查看已经安装的镜像 4.删除镜像 二、容器操作 软件镜像——运行镜像——产生一个容器(正在运行的软件) 1.运行创建镜像,有了镜…

    Java 2023年6月13日
    076
  • JSON数据和Java对象的相互转换

    JSON数据和Java对象的相互转换 JSON解析器 创建的解析器:Jsonlib,Gson,Fastjson,jackson JSON转为Java对象 使用步骤: 导入jacks…

    Java 2023年6月6日
    067
  • 微服务SpringCloud之服务注册与发现

    在找.net core 微服务框架时发现了Steeltoe开源项目,它可以基于Spring Cloud实现.net core和.net Framework的微服务。正好之前也有学习…

    Java 2023年5月30日
    088
  • 123取反操作为什么是-124 取反操作

    首先请记住一点,在计算机中所有的二进制都是以补码的形式存储的,所以你最后取反之后只是这个数的补码,你还需要转换成源码,才是我们最终的十进制数字 下面是计算过程: 正数取反(123,…

    Java 2023年6月6日
    0117
  • Flutter Pub发布失败

    csharp;gutter:true; Do you want to publish rome_bus 0.0.2 (y/N)? y Uploading… (1.3s) Fai…

    Java 2023年5月29日
    069
  • Mysql底层索引使用B+树(数据结构学习感悟)

    Mysql底层索引使用B+树(数据结构学习感悟) 注:本文仅代表个人观点,没有任何依据,如有错误,敬请斧正 考研学习数据结构,有了比之前更深的认识,或者说数据结构运用无处不在,如H…

    Java 2023年6月9日
    083
  • Python工具箱系列(七)

    上期描述了如何在ubuntu18.04下安装python3.8,本期将描述: · BIOS开启CPU的虚拟化支持 · 如何在windows10/11下安装wsl/wslg · 如何…

    Java 2023年6月16日
    080
  • 看Spring源码不得不会的@Enable模块驱动实现原理讲解

    这篇文章我想和你聊一聊 spring的@Enable模块驱动的实现原理。 在我们平时使用spring的过程中,如果想要加个定时任务的功能,那么就需要加注解@EnableSchedu…

    Java 2023年6月16日
    0107
  • 子串次数——类似KMP

    老规矩 先来看问题 字符串a 在A中出现了多少次 求次数 。 当然有很多种算法 最简单的 一个一个找呗 不过这种太麻烦 我们不讲这种 我在写这个算法的时候 用到了KMP算法的部分内…

    Java 2023年6月5日
    069
  • Java中对域和静态方法的访问不具有多态性

    1.将方法调用同方法主体关联起来被称为 2.编译期绑定(静态)是在程序编译阶段就确定了引用对象的类型 3.运行期绑定(动态绑定)是指在执行期间判断所引用对象的实际类型,根据其实际的…

    Java 2023年6月16日
    075
  • RestTemplate打印日志的正确知识

    背景 现在随着微服务的逐渐发展,越来越多的公司开始采用微服务架构,但随之而来的问题是,服务间如何调用,如何还能负载均衡,还必须开箱即用?答案就是Spring的RestTemplat…

    Java 2023年6月15日
    080
  • mongodb oplog日志详解和格式分析

    基本概念 oplog使用固定大小集合记录了数据库中所有修改操作的操作日志(新增、修改和删除,无查询),其记录每条记录被修改后的数据,等同于MYSQL中ROW类型的binlog。mo…

    Java 2023年6月6日
    078
  • 微服务与领域驱动设计,架构实践总结

    怎样的架构才能配得上造到飞起的变化? 一、软件复杂性 1、复杂原因 如果软件系统存在持续的迭代周期,那么其中业务、技术、架构的复杂性都会直线拉升,其相应的开发难度也会提高,可以用一…

    Java 2023年6月15日
    075
  • 妄撮小游戏的开发思想-Android开发资料-《妄撮(撕开美女衣服)》游戏源代码外传

    激动!想必大家一定听说过《妄撮》又名《撕开美女衣服》这个手机游戏,体验非常棒,很H很BL啊,现在很难下载到。不过今天哥在一个论坛竟然发现了这个游戏的源代码被外传,赶紧收藏,并慷慨与…

    Java 2023年5月29日
    083
  • Linux安装开发软件

    安装MySQL首先查看本机是否已经安装 若发现,则将其删除: 查看yum源是否有mysql安装包 选择三个安装:mysql,mysql-server,mysql-devel安装: …

    Java 2023年6月8日
    096
  • 【转】虚拟机网络服务启动失败Failed to start LSB 解决方法

    场景:克隆了一个虚拟机后不能重启它的网络服务编辑IP配置文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33重新修改了ip后,发现还是报…

    Java 2023年5月30日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球