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标记源端口号和目的端口号。
分用
目的主机收到以太网数据帧之后,从协议栈由低向上升,同时去掉各层协议上的报文首部。每层协议盒都要减产报文中的协议标志,以确定接收数据的上层协议。这个过程称之为奋分用。
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构建,可进行加密传输,安全级别较高,需要证书,握手阶段比较费时,页面加载时间延长。