一、TCP
TCP属于传输层。
(1)TCP协议的特性:TCP是面向连接的,提供全双工的服务,数据流可以双向传输。也是点对点的,即在单个发送放方和单个接收方之间的连接。
(2)TCP 报文段结构
序号:TCP 的序号是数据流中的字节数,不是分组的序号。表示该报文段数据字段首字节的序 号。
确认号:TCP 使用累积确认,确认号是第一个未收到的字节序号,表示希望接收到的下一个字 节。
首部长度:通常选项字段为空,所以一般 TCP 首部的长度是 20 字节。
选项字段(可选与变长的):用于发送方与接收方协商 MSS(最大报文段长),或在高速网络环境下用作窗口调节因子。
标志字段
ACK:指示确认字段中的值是有效的
RST,SYN,FIN:连接建立与拆除
PSH:指示接收方应立即将数据交给上层
URG:报文段中存在着(被发送方的上层实体置位)“紧急”的数据
接收窗口:用于流量控制(表示接收方还有多少可用的缓存空间)。
TCP RFC 并没有规定失序到达的分组应该如何处理,而是交给程序员。可以选择丢弃或保留。 如果发生超时,TCP 只重传第一个已发送而未确认的分组,超时时间间隔会设置为原来的 2 倍。
(3)流量控制:如果应用程序读取数据相当慢,而发送方发送数据太多、太快,会很容易使接收方的接收缓存溢出,流量控制就是用来进行发送速度和接收速度的匹配。发送方维护一个“接收窗口”变量,这个变量表示接收方当前可用的缓存空间。
二、HTTP(超文本传输协议)
HTTP属于应用层。
(1)HTTP协议的特性 HTTP 协议一共有五大特点:a. 支持客户/服务器模式;b. 简单快速;c. 灵活;d. 无连接;e. 无 状态。
无连接含义:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态含义:指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完不会记录任何信息。
(2)HTTP 客户机及服务器
HTTP 客户机:web 浏览器
HTTP 服务器:web 服务器,包含 web 对象(HTML 文件、JPEG 文件、java 小程序、视频片段 等)
(3)HTTP 方法字段:
GET:绝大部分 HTTP 请求报文使用 GET 方法
POST:用户提交表单时(如向搜索引擎提供关键字),但提交表单不一定要用 POST 方法
HEAD:类似于 GET,区别在于服务器返回的响应报文中不包含请求对象(常用于故障跟踪)
PUT:用于向服务器上传对象
DELETE:用于删除服务器上的对象
(4)HTTP 状态信息
301 Permanently Moved 被请求的资源已永久移动到新位置,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302 Found 请求的资源现在临时从不同的URL响应请求。301是永久重定向,而302是临时重定向。
200 OK 表示从客户端发来的请求在服务器端被正确处理。
304 Not Modified 304状态码是告诉浏览器可以从缓存中获取所请求的资源。
400 bad request 请求报文存在语法错误 。
403 forbidden 表示对请求资源的访问被服务器拒绝 。
404 not found 表示在服务器上没有找到请求的资源。
500 internal sever error 表示服务器端在执行请求时发生了错误 。
503 service unavailable 表明服务器暂时处于超负载或正在停机维护,无法处理请求。
(5)HTTP中常见的文件格式 text/html:
HTML格式 text/plain:纯文本格式
image/jpeg:jpg图片格式
application/json: JSON数据格式
application/x-www-form-urlencoded: form表单数据被编码为key/value格式发送到服务器 (表单默认的提交数据格式)
multipart/form-data: 在表单中进行文件上传时使用
三、FTP(文件传输协议)
FTP属于应用层。FTP 使用两个并行的 TCP 连接来传输文件:
(1)控制连接(持久):传输控制信息,如用户标识、口令、改变远程目录命令、文件获取上传 的命令;
(2)数据连接(非持久):传输实际文件。 FTP 客户机发起向 FTP 服务器的控制连接,然后在该连接上发送用户标识和口令、改变远程目录的命令。FTP服务器收到命令后,发起一个到客户机的数据连接,在该连接上准确地传送一个文件并关闭连接。
有状态的协议:FTP 服务器在整个会话期间保留用户的状态信息。服务器必须把特定的用户账号 和控制连接联系起来。