Web编程之网络基础

【笔记】计算机网络知识

作者 Trekerz 日期 2017-02-27
Web编程之网络基础

一、 TCP/IP网络

1. 综述
(1) 网络分层

数据的网络传输大致要经过信息格式转换、分发、寻址、物理传输等过程,这些过程中还要加入多种校验措施以保证传输的正确性。

本书把TCP/IP网络分为四层:应用层(HTTP、SMTP等)、传输层(TCP或UDP)、网络层(IP)、接口层(物理细节)。

(2) 网络设备

集线器、交换机、网桥、路由器、网关、调试解调器、无线接入点、防火墙。

(3) IP地址
(4) 域名
(5) URL
2. TCP和UDP
(1) 端口

包括各种常用端口号。

(2) TCP

面向连接、可靠的、基于字节流的传输层通信协议。

三次握手建立连接、四次消息关闭连接。

(3) UDP

无连接、不可靠的传输层通信协议。

没有拥塞控制算法,程序需在应用层自行控制。

没有拆分合并,直接向下层交付,故在应用层就需要注意报文大小。

3. C/S及B/S架构

B/S相对于C/S的优点:便于部署、维护和升级;跨平台、开放、对客户端要求低;对安全性的要求较高。

二、 HTTP

1. HTTP流程

浏览器发起一次请求的全过程。

注意:域名解析本身不是HTTP的一部分;HTTP中有keep-alive选择,可以使连接在一次请求后不关闭以便接下来的第二次请求。

2. HTTP消息结构
(1) Request消息结构

由消息头(请求方法、URL、协议版本以及多个头字段)和消息体组成。

注意格式。

(2) Response消息结构

也由消息头和消息体组成,不同点是第一行由协议版本和错误码组成。

(3) 常用头字段(熟记)
(4) 常用错误码(熟记)
3. HTTP请求方法

GET、POST、DELETE、HEAD、OPTIONS、PUT。

4. 基于HTTP的网站开发

(1) 常用Web服务器:Apache、Nginx、IIS、Tomcat、JBoss。

(2) 主流语言的Web调用接口规范:CGI、ISAPI、WSGI(Python专用)。

三、 Socket编程

一种非公有协议(而HTTP是公有协议)。用于描述IP地址和端口,是一个通信链句柄,可以实现不同计算机或虚拟机之间的通信。

Socket为应用程序屏蔽了TCP/IP网络传输层及以下的网络细节,为用户空间提供网络抽象,通过这个抽象可以很容易地控制TCP和UDP,甚至IP和ICMP。

Socket使用IP+端口+协议的三元组唯一标识一个通信链路。

(1) Socket的TCP原语

包括连接中使用到的多个函数。在Python中封装在了Socket包里,使用时要import进来。

(2) Socket的UDP原语

相对于TCP,UDP在传输层提供更少的控制,没有建立连接、断开连接等概念,过程稍微比TCP简单些。

UDP Socket可以复用TCP中的socket()和bind()原语,同时UDP有自己的原语:recvfrom()和sendto()。