面试突击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)

大家都在看

  • 单例模式–还没从工厂中逃脱出来?看来是注定单身了..

    前言 上次我们聊了聊一个略微重量级的工厂模式,不知道你是否消化完从工厂中逃脱出来了呢?不是我说,今天的单例模式,恰恰好相反了,孤孤单单,看来是注定单身了.. 先来看看单例模式在jd…

    Java 2023年6月5日
    094
  • 【转】【数学】矩阵求逆的几何意义

    向量:[a1, a2, a3, …, an]矩阵:a11, a12, a13, …, a1na21, a22, a23, …, a2n&#823…

    Java 2023年5月29日
    0197
  • 关于IDEA中Tomcat中文乱码的解决方案

    进入Tomcat/config文件夹下,打开编辑logging.properties 然后查看该文件内是否存在 java.util.logging.ConsoleHandler.e…

    Java 2023年6月8日
    098
  • 20220722-Java中this关键字

    this关键字知识总结 学习资源:B站韩顺平老师Java入门教学 代码示例1 public class This01 { public static void main(Strin…

    Java 2023年6月15日
    088
  • 日常白痴_get请求中的特殊字符

    在Get请求中看见 & 早已见怪不怪了,但今天忽然在代码中拼接请求的时候看见了 %20,这就尴尬了,忽然不认得,这是什么东西了,后来查了一下,原来get请求会需要对一些特殊…

    Java 2023年6月7日
    079
  • 避坑手册 | JAVA编码中容易踩坑的十大陷阱

    JAVA编码中存在一些容易被人忽视的陷阱,稍不留神可能就会跌落其中,给项目的稳定运行埋下隐患。此外,这些陷阱也是面试的时候面试官比较喜欢问的问题。 本文对这些陷阱进行了统一的整理,…

    Java 2023年6月7日
    0202
  • MyBatis

    一、Mybatis基本使用步骤 1.导入依赖 org.mybatis mybatis 3.5.2 2.配置连接池 db.properties(使用jdbc-mysql驱动) dri…

    Java 2023年6月5日
    092
  • Stream流式计算

    Stream流式计算 集合/数据库用来进行数据的存储而计算则交给流 undefined public class Demo { public static void main(St…

    Java 2023年6月5日
    0103
  • HttpClient 在vivo内销浏览器的高并发实践优化

    作者:vivo 互联网服务器团队- Zhi Guangquan HttpClient作为Java程序员最常用的Http工具,其对Http连接的管理能简化开发,并且提升连接重用效率;…

    Java 2023年6月15日
    069
  • spring boot 支持返回 xml

    JAXB(Java Architecture for XML Binding) 是一个业界的标准,可以实现java类和xml的互转 jdk中包括JAXB JAXB vs jacks…

    Java 2023年5月30日
    070
  • JAVA的类型转换(基本类型)

    类型转换 由于java是强类型语言,所以在进行某些运算的时候,需要用到类型转换。 低–>高指的是字节大小,从小到大。 小数的优先级大于整数 数值进行类型转换时不要…

    Java 2023年6月9日
    088
  • java字符串的比较

    比较在我们开发中会经常用到,比如输入密码,然后进行验证,这就需要前后两次输入密码的比较.在字符串中,下面介绍三种比较方法. ==比较 在存储字符串的过程中,我们知道,变量指向栈,字…

    Java 2023年6月8日
    093
  • Java线程池中三种方式创建 ThreadFactory 设置线程名称

    本文讲一下Java线程池中创建 ThreadFactory 设置线程名称的三种方式。设置线程名称是很重要的,如果你没有设置过,说明你还”涩世”不深,这里面的…

    Java 2023年5月29日
    068
  • docker+nginx+redis部署前后端分离项目!!!

    介绍本文用的经典的前后端分离开源项目、项目的拉取这些在另一篇博客!!! 其中所需要的前后端打包本篇就不做操作了!!不明白的去看另一篇博客!!! 地址:http://www.cnbl…

    Java 2023年6月9日
    0103
  • springCloud feign使用/优化总结

    基于springCloud Dalston.SR3版本 1.当接口参数是多个的时候 需要指定@RequestParam 中的value来明确一下。 /** * 用户互扫 * @pa…

    Java 2023年6月16日
    0105
  • 多线程编程总结:一、认识多线程本质

    在当今计算机系统中,已经大量存在多核心CPU,或者是在多核心基础上有进一步的超线程技术将虚拟CPU数量翻倍。在计算机发展之初,我们的应用程序是按照一个CPU只做一件事情来应用,也就…

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