一、概述 1、协议 HTTP和HTTPS协议 2、组成 服务器端:web进程 客户端:用户代理程序(IE、Firefox) 3、套接字(socket) IP+端口信息 用一小段数据将网络中两个应用程序连接起来的机制 4、IANA 互联网数字分配机构
0-1023:特权端口或公认端口,分配给固定的应用程序使用
1024-41951:注册端口,要求不严格,分配给程序注册使用,如TCP 3306 MYSQL
41952+:动态端口或私有端口,客户端程序随机使用的端口
/proc/sys/net/ipv4/ip_local_port_range 端口范围文件
/etc/services 端口定义文件
c:\windows\system32\drivers\etc\services
5、系统调用
system call
6、库调用
lib call
7、API
程序开发人员面对的编程接口
二、套接字接口 1、BSD socket 通过IPC(进程间通信)实现,允许不同主机上的进程之间进行通信 2、socket API 程序开发者可以通过套接字接口更加简单的开发 支持网络通信 的服务或应用程序 3、套接字函数 服务端: 创建套接字文件 scoket ( ) 绑定套接字 bind ( ) 监听套接字 listen ( ) 接受套接字 accept ( ) 阻塞直到接收到客户端连接请求
客户端:
创建套接字文件 socket ( )
连接套接字文件 connect ( )
TCP连接过程建立(三次握手)
a、客户端向服务器段发送TCP报文
SYN表示”请求建立新连接“
序号Seq=x
b、服务器端接收客户端报文,结束Listen阶段,返回TCP报文
ACK确认标志位,确认号为Ack=x+1
SYN请求标志位,序号为Seq=y
c、客户端接收服务器端报文,结束SYN-SENT阶段,返回TCP报文
ACK确认标志位,确认号为Ack=y+1
SYN请求标志位,序号为Seq=x+1
客户端进入ESTABLISHED阶段,进行数据交换
数据传输:
数据写入套接字 write ( )
数据读取套接字 read ( )
无限循环处理,直到所有数据处理完成,关闭连接 closed
TCP连接的关闭过程(四次挥手)
a、客户端向服务器端发送TCP报文
FIN表示”请求释放连接“
序号Seq=x
客户端进入FIN-WAIT-1阶段(半关闭阶段)
b、服务器端确认接收客户端报文,进入CLOSE-WAIT阶段,返回TCP报文
ACK表示”接收到客户端的释放连接的请求“,确认号为Ack=x+1
SYN请求标志位,序号为Seq=y
c、服务器端做好释放连接的准备,再发送TCP报文
FIN、ACK表示”准备好释放连接“
序号为Seq=z
确认号为Ack=x+1
d、客户端接收服务器端报文,进入TIME-WAIT阶段,向服务器发送TCP报文
ACK表示”接收到服务器准备好释放连接的信号“
序号为Seq=x+1
确认号为Ack=z+1
客户端最后发送报文后,需要等待一段时间,即等待客户端的请求能够送达服务器端,
不需要对方响应,这个时间一般是报文发送来回需要的总时长的2倍,因此称之为2MSL
4、TCP FSM
FSM:有限状态机
CLOSED、LISTEN、SYN-SENT、SYN-RECEIVED、ESTABLISHED、FIN-WAIT-1、FIN-WAIT-2、TIME-WAIT、LAST-ACK等
5、类型
协议:
SOCK_STREAM:TCP套接字
SOCK_DGRAM:UDP套接字
地址格式:
AF_INET:IPv4
AF_INET6:IPv6
AF_UNIX:同一个主机上的不同进程之间基于套接字通信时的一种地址格式 Unix_Sock
三、网站基础概念 1、基础 域名:解决IP地址不方便记忆以及不能显示组织名称和性质的缺点而设计的,通常需要DNS支持 URL:统一资源定位符,互联网中指定信息位置的标识方法,http:// https:// HTTP:超文本传输协议,应用层协议,网站服务器和客户端之间通信的基础协议 网页:网站的基本元素,是承载各种网站应用的平台。网页中可以包含文本、图像、视频、表单等元素 首页:浏览器默认打开的网页 ,通常是 index.html HTML:超文本标记语言,通过其标记符告知浏览器如何显示该文件中的内容
2、HTML语言
html、head、body、table、tr、td等
3、其它语言
CSS:层叠样式表,实现HTML或XML等文件样式的计算机语言,对网页内容进行排版和编辑
JS:JavaScript,网页开发脚本语言,属于客户端脚本语言,需要下载到客户端,通过浏览器引擎加载执行并展示给用户。
PHP:超文本预处理器,属于服务器端脚本语言,允许开发人员快速编写动态网页
|