一、TCP介绍、编程流程
1.1 TCP介绍、编程流程
TCP回顾:
1、面向连接的流式协议;可靠、出错重传、且每收到一个数据都要收到一个数据要给出相应的确认
2、通信之前需要建立连接
3、服务器被动连接
TCP与UDP的差异
二、TCP编程——socket
2.1 TCP套接字创建
三、TCP客户端——connect、send、recv
3.1 connect
3.2 send
注意:
不能用TCP协议发送0长度的数据包(UDP可以)
3.3 recv
客户端:
四、TCP服务器——bind、listen、accept
4.1 作为TCP服务器需要具备的条件
1、具备一个可以确认可以知道的地址
2、让操作系统知道一个是服务器,而不是客户端
3、等待连接的到来
对于面向连接来的TCP协议来说,连接的建立才是真正以为着数据通信的开始
4.2 bind
4.3 listen
4.4 accept
阻塞等待客户端的链接
注意:
accept之前包括accept都是用的sockfd的返回值,accept之后通信的时候用的是accept的返回值
服务器端:
五、TCP编程——close、三次握手、四次挥手
5.1 close 关闭套接字
5.2 三次握手
连接:
5.3 四次挥手
关闭:
六、TCP并发服务器
TCP不能实现并发的原因:
由于TCP服务器端有两个读阻塞函数,accept和recv,两个函数需要先后运行,所以导致运行一个函数的时候另一个函数无法执行,所以无法保证一边连接客户端,一边与其他客户端通信。
6.1 多进程实现并发
6.2 多线程实现并发
七、web服务器介绍
7.1 web服务器简介
web服务器又称为www服务器、网站服务器。
特点:
1、使用HTTP协议栈与客户机浏览器进行信息交流
2、不仅能存储信息,还能在用户通过web浏览器提供的信息的基础上运行脚本和程序
3、该服务器可安装在UNIX、Linux或者Windows等操作系统上
4、著名的服务器有Apache、Tomcat、IIS等
7.2 HTTP协议
7.2.1 webserver——HTTP协议
概念
一种详细规定了浏览器和万维网服务器之间的互相通信规则,通过因特网传送万维网文档的数据传送协议。也就是超文本传输协议。
特点:
1、支持C/S架构
2、简单快速:客户像服务器请求服务时,只需要传送请求方法和路径,常用方法GET、POST
3、无连接:限制每次连接只处理一个请求
4、无状态:即如果后续处理需要前面的信息,它必须重传,这样可能导致每次连接传送的数据量会增大