当前位置: 首页 > news >正文

计算机网络:应用层(一)

在这里插入图片描述

  • 我最近开了几个专栏,诚信互三!
    ====> |||《算法专栏》::刷题教程来自网站《代码随想录》。|||
    ====> |||《C++专栏》::记录我学习C++的经历,看完你一定会有收获。|||
    ====> |||《Linux专栏》::记录我学习Linux的经历,看完你一定会有收获。|||
    ====> |||《C#专栏》::记录我复习C#的经历,深度理解查漏补缺,不定期更新。|||
    ====> |||《计算机网络专栏》::记录我学习计算机网络,看完你一定会有收获。|||

计算机网络:应用层(一)

  • 应用层要解决的问题
  • 如何解决这些问题
    • IP地址及端口初识
    • 应用层协议
    • socket初识(初次理解)
    • TCP/UDP要提供的服务
  • TCP/UDP初识

应用层要解决的问题

在之前的计网博客中,我们以及学习到了网络和基于ISO,TCP/IP的网络层状结构,其中我们了解到了应用层要解决的问题是两台主机之间进程与进程之间的通讯问题。

如何解决这些问题

  • 首先,要解决进程之间的通讯问题,我们首先需要知道我们要与那个主机进行通讯。
  • 其次就要解决我们要与该主机的那个进程进行通讯。
  • 在次我们还要解决双方通讯所要遵守的规则,及协议。

IP地址及端口初识

要解决第一个问题,我们可以借助IP地址和端口,我们知道,IP地址表识了某个网络,这样我们就可以定位到接收方的网络位置,而进程则需要端口号来确认一个主机上有多个进程,端口号是一个数字,来标识唯一的进程,这样我们就能定位到网络,同时定位到精确的进程了。

定位到网络并不能找到某一台主机,还需要MAC地址,而这部分不属于应用层的管辖,属于数据链路层。

http的默认端口号为80号。
在这里插入图片描述

应用层协议

所谓的协议是层与层之间传递信息的一个规则的集合,协议中包含了很多东西,入语法,语义,时序等,应用层的主要协议有http,https协议,https协议是http+ssl协议,TCP/UDP是明码发送的,所以https协议就是解决如何在TCP/UDP为上层提供的服务中保证安全性。
下图是http报文格式。
在这里插入图片描述

socket初识(初次理解)

在我们传输数据的时候,我们要确认一些东西,比如:我是谁,我的那个进程要发送信息,接收方是谁,接收方的那个进程要接收该信息。 再比如我需要运输层为应用层提供可靠传输还是非可靠传输(TCP/UDP)。 以及基于什么协议进行传输。
我们发现,如果每次发送消息/接收消息,我们都确认并发送一边 “我是谁,我的那个进程要发送信息,接收方是谁,接收方的那个进程要接收该信息。”这样的信息,首先会导致效率降低,并且对空间的利用也不够好,socket解决的这个问题。

  • socket是被操作系统维护的一个表格,在需要可靠传输时(TCP),这个表格中包含了本地IP地址本地端口号接收方IP地址接收方端口号。这四个信息,在发送的时候,将这4个信息集合到一个整形中,并为四元组,发送出去,接收方同时也维护一个表格,来接收该四元组信息。
  • 对于非可靠传输(UDP)socket维护的是一个二元组表格,该表格内存有本地IP地址本地端口号

通过socket,我们不用在发送多条信息,只需发送四元组/二元组,就能确定所有信息,同时对于TCP来说,只需要确定不同的接收方的端口号,就可以直接发送数据,这样就节约了时间,对于接收方也是如此,UDP只需要确定接收方的IP,和端口号,这样就将很多重复工作的时间节约了下来。

TCP/UDP要提供的服务

我们知道在计算机体系结构中,下层要为上层提供服务,TCP/UDP协议要为应用层提供基于运输层的可靠与否的服务。

TCP:可靠传输,基于TCP/IP协议。
UDP:非可靠传输。

它们互有优劣,选择什么服务需要由应用层的进程决定。
但是这两个协议都是明码传输的,这在某些情况下是十分危险的,要解决这个问题,需要应用层的协议ssl,ssl是一个库,它可以为数据提供安全的传输解决TCP/UDP无法安全传输的问题。

TCP/UDP初识

简单认识以下TCP/UDP协议。

TCP:是运输层提供可靠传输的协议,为了实现可靠传输基于TCP的运输层会做以下工作

  • 1.TCP协议会检测当前信道的吞吐量,如果过高则TCP协议会减少发送的数据,保证数据的精确度。
  • 2.在传输时,会保留副本,如果分组丢失了,则重发。
    还有很多保证可靠传输的方法,这次简单认识下

UDP:是运输层提供非可靠传输的协议,由于是非可靠传输,所以对以上的要求都不高,入分组丢失不会重发,也不会保存分组,不会检测吞吐量,运输层数据接收速度与发送速度几乎相等等等。

这两种传输友好有坏,TCP提供可靠传输,用时间换取了数据的准确度,UDP则不会这样做。
比如流媒体,网络游戏等需要UDP提供服务,电子邮件等则需要TCP提供服务。

相关文章:

  • web如何实现录制音频,满满干货(上篇)
  • 大文件分割,合并------C++ ------fstream
  • OpenCL学习笔记(三)手动编译开发库(win10+mingw64)
  • leetcode 101.对称二叉树
  • iphone/安卓手机如何使用burp抓包
  • 前端知识(十一)———js判断上传的文件是GBK编码还是UTF-8
  • Apollo配置发布原理解析
  • 简单自定义vuex的设计思路
  • RabbitMQ学习
  • 单元测试技术
  • 浅谈linux缓冲区的认识!
  • 现代雷达车载应用——第2章 汽车雷达系统原理 2.2节
  • windows7无法打开或关闭Windows防火墙
  • 关于碰撞试验
  • AlexNet
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Android Studio:GIT提交项目到远程仓库
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JS+CSS实现数字滚动
  • Promise初体验
  • Sass 快速入门教程
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue脚手架vue-cli
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 程序员该如何有效的找工作?
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从setTimeout-setInterval看JS线程
  • 爬虫模拟登陆 SegmentFault
  • 前端面试总结(at, md)
  • 如何合理的规划jvm性能调优
  • 如何利用MongoDB打造TOP榜小程序
  • 如何用vue打造一个移动端音乐播放器
  • 事件委托的小应用
  • 移动端 h5开发相关内容总结(三)
  • 智能合约开发环境搭建及Hello World合约
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 阿里云移动端播放器高级功能介绍
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​ArcGIS Pro 如何批量删除字段
  • !$boo在php中什么意思,php前戏
  • #QT(一种朴素的计算器实现方法)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (Matlab)使用竞争神经网络实现数据聚类
  • (vue)页面文件上传获取:action地址
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十三)Maven插件解析运行机制
  • .NET 依赖注入和配置系统
  • [Android]Android开发入门之HelloWorld
  • [Angular] 笔记 18:Angular Router
  • [C#] 我的log4net使用手册