应用层-day01

主流应用程序体系结构:CS结构、P2P结构。

CS结构:客户-服务器体系结构。有一台总是打开的主机称为服务器,它服务来自其他许多称为客户的主机的请求。

P2P体系结构:应用程序在不同的主机间链接,被称为对等方。P2P体系结构最有特点的地方在于自扩展性,但是也有问题:ISP不友好、安全性、用户是否愿意提供带宽。

进程通信:

  在两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信。

网络应用程序由成对的进程组成。在给定的一对进程之间的通信会话场景,发起通信的进程被表示为客户,在会话开始时等待联系的进程是服务器。

多数应用程序由通信进程对组成,进程通过一个软件接口(套接字)向网络发送报文和从网络接受报文。

套接字:

  是一台主机内应用层与运输层之间的接口,也成为应用程序编程接口(Application  Programming  Interface)  

开发者对于运输层的控制权仅限于:1.选择运输层协议。2.设定仅有的几个运输层参数。

为了标识接收进程需要定义两个信息:主机的地址  主机中接收进程的标识符。这两个信息分别用:ip  端口号做标识。

运输层协议可以为应用程序提供:1.可靠数据传输、2.吞吐量、3.定时、4.安全性四个方面的服务。

可靠数据传输:端系统的传送的数据正确且完全地交付给另一个端系统。

吞吐量:具有吞吐量敏感的应用被称为:带宽敏感数据。

定时:指能够实现较短的时延。

安全性:运输层协议能够对数据进行加密和解密。

因特网为应用程序提供了两个运输层协议:UDP和TCP。

TCP:

  包含面向连接服务与可靠数据服务。某个应用程序调用TCP作为运输协议时,该应用就能获得这两个服务。

面向连接服务:

  在数据报文流动前,TCP让客户端与服务端相互交换运输层控制信息(三次握手),握手后一个TCP连接就在应用程序的套接字间建立了。该连接是全双工的,即连接双方的进程可以在此连接同时发送报文。当应用程序发送报文结束时,该连接需要拆除(四次挥手)。

可靠的数据传送服务:

  通信进程可以依靠TCP,无差别、按适当顺序交付所有发送的数据。不会出现字节丢失和冗余。

TCP还具有拥塞控制机制:当发送方和接收方间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程。

至于安全性问题:

  TCP与UDP都没有加密机制。因特网界使用安全套接字层(Secure Sockets Layer,SSL)。

UDP:

  是一种不提供不必要服务的轻量级运输协议,仅提供最小的服务。

  UDP无连接,即进程通信不会握手、UDP提供一种不可靠数据传送服务,不能够保证该报文将到达接受进程(到达的报文也可能乱序)。

应用层协议:

  定义了运行在不同端系统上的应用程序进程如何相互传递报文:

    交换的报文类型。          如请求报文和响应报文

    各种报文类型的语法。        报文中的各个字段及这些字段是如何描述的。

    字段的语义。            字段包含的信息

    一个进程何时以及如何发送报文,对报文进行响应的规则。   

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏转载gongluck的CSDN博客

UNPv13:#第4章#基于TCP套接字编程

概述 ? socket函数 #inlcude <sys/socket.h> int socket(int family, int type, int prot...

38780
来自专栏转载gongluck的CSDN博客

UNPv13:#第2章#传输层:TCP、UDP和SCTP

概述 虽然协议族被称为“TCP/IP”,但除了TCP和IP这两个主要协议外,还有许多其他成员。所有网际协议由一个或多个称为请求评注(Request fo...

33960
来自专栏程序员互动联盟

抓包工具Wireshark过滤规则实践第一篇

引子 现在从网上看到的一些wireshark过滤规则的介绍,都是比较老一点的,新版本的语法好像有所变化,所以在这里写一篇基于最新的1.12版本的wireshar...

55390
来自专栏转载gongluck的CSDN博客

第20章 广播

1·广播和多播要求用于UDP或原始IP,它们不能用于TCP。 2·单播IP数据报仅由通过目的IP地址指定的单个主机接收。 3·广播分组去往子网上的所以主机,包括...

34790
来自专栏人工智能LeadAI

通过UDP广播实现Android局域网Peer Discovering

本文将介绍以下知识点: 1、TCP与UDP的区别; 2、单播、多播、广播; 3、Java中实现UDP的重要的类; 4、Peer Discovering方案 01...

74840
来自专栏程序员互动联盟

【java网络】编程基础

Java 网络编程 基于套接字的通信可以使程序通过指定的套接字进行通信。套接字是两个主机之间逻辑链接的端点,可以用于发送和接收数据,Java对套接字的处理非常类...

38990
来自专栏Golang语言社区

Golang udp服务端客户端例子

golang udp服务端客户端例子 服务端: package main import ( "fmt" "net" ) func main(...

37770
来自专栏专注数据中心高性能网络技术研发

linux lsof命令查看文件占用进程

1.lsof简介 lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以...

57540
来自专栏转载gongluck的CSDN博客

第8章 基本UDP套接字编程

客户端: #include "../Gnet.h" void do_client(int udpfd, struct sockaddr* pserver_ad...

397110
来自专栏程序猿

TCP与UDP的区别--划重点了

TCP是面向连接的,虽然说网络不安全不稳定的特性决定了多少次握手都不能保证连接的的可靠性,但是TCP的三次握手最低限度上(也是很大程度上保证了)保证了连接的可靠...

36870

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励