Android开发必须掌握的网络基础: 第一章 概述

1 分层协议

层级 协议 功能 进程 补充
应用层 http、telent、ftp、e-mail 负责处理特定的应用程序细节 用户进程,处理应用程序细节
传输层 TCP和UDP 为两台主机上的应用程序提供端到端的通信 内核进程,处理通信细节(下同) TCP在IP层的基础上,提供可靠的服务
网络层 IP、ICMP、ICMP 处理分组在网络中的活动 ... IP层尽可能快的把分组从源节点送到目的节点,而不提供任何可靠的保证
链路层 设备驱动程序以及接口卡(链路层协议例如ARP地址解析协议) 处理与电缆等物理接口的细节 ...

应用程序关心的是应用程序的细节,而不是数据在网络中的传输活动;下三层对应用层一无所知,但是它们要处理所有的通信细节。

2 封装与分组

2.1封装
当应用程序用TCP传输数据时,数据送入到协议栈中,然后逐个通过每一层,直到被当做一串比特流送入网络。其中每一层都要增加一些首部信息(有时还要增加尾部信息)。TCP传给IP层的叫做TCP段(segment),IP传给链路层的叫IP数据报(datagram)。通过以太网传输的比特流成为帧(Frame)。
一下图中标记的首部长度是典型的,实际中并不一定。
协议栈中下层接收数据时,需要在首部中标记是哪种协议发出的数据。IP首部中用一个8bit的数值,称之为协议域,用1表示ICMP,用2表示ICMP,用6表示TCP,用17表示UDP。
类似的,TCP和UDP协议均会在首部中使用16个bit标记源端口号和目的端口号。


Android开发必须掌握的网络基础: 第一章 概述_第1张图片
数据进入协议栈时的封装过程.png

分用

目的主机收到以太网数据帧之后,从协议栈由低向上升,同时去掉各层协议上的报文首部。每层协议盒都要减产报文中的协议标志,以确定接收数据的上层协议。这个过程称之为奋分用。

Android开发必须掌握的网络基础: 第一章 概述_第2张图片
分用过程

3客户端服务端模型

大多数网络应用程序编写时都假设一段是客户端,一段是服务端。

重复型服务器

1 等待客户请求的到来
2 处理客户请求
3 发送响应给发送请求的客户
4 返回步骤1
处理客户请求时,不能给其它其它客户服务。

并发型服务器

1 等待……
2 启动一个新的服务器开处理客户的请求,可能生成新的进程、线程等
3 返回步骤1
可以同时为多个客户服务。
一般来说,TCP服务器是并发的,UDP服务器是重复的。

4 端口号

使用16bit的端口号来识别应用程序。
服务器一般通过知名端口号来识别,FTP端口号21,http端口号80,https端口号443。

https:使用的是完全不同的连接方式,端口号不同。在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。https使用ssl和https构建,可进行加密传输,安全级别较高,需要证书,握手阶段比较费时,页面加载时间延长。

你可能感兴趣的:(Android开发必须掌握的网络基础: 第一章 概述)