tcp/ip,http协议

TCP/IP协议简介

TCP/IP是最广泛支持的通信协议集合 – 包括大量Internet应用中的标准协议 – 支持跨网络架构、跨操作系统平台的通信

主机与主机之间通信的三个要素

– IP地址(IP address)

– 子网掩码(subnet mask)

– IP路由(IP router) 网络设备 路由器

 IP地址

唯一标识,网络中一台主机 由32个二进制数组成

11111111 00000000 11111111 00000000

点分十进制数,最终由4个十进制数标示

192.168.1.1 200.1.1.2

8个二进制1,转成十进制为255

IP地址的分类

•用于一般计算机网络

– A类:1 ~ 127 网+主+主+主

– B类:128 ~ 191 网+网+主+主

– C类:192 ~ 223 网+网+网+主

• 组播及科研专用

– D类:224 ~ 239 组播

– E类:240 ~ 254 科研

 IP地址组成

网络位与主机位两部分来组成

子网掩码: 作用:区分IP地址网络位与主机位 利用二进制的1表示网络位 利用二进制的0表示主机位 192.168.10.1=11000000.10101000.00001010.00000001 11111111.11111111.11111111.00000000 255.255.255.0

192.168.10.1 255.255.255.0 = 192.168.10.1/24

192.168.1.1 与 192.168.2.1 判断 跨区域通信 跨网络的通信

配置IP地址方式:

1.手工配置 由管理员手工配置

2.自动获取IP地址 前提:网络中需要有DHCP服务器

查看IP地址的命令:ipconfig

测试通信的命令:ping 对方的IP地址

 ping  192.168.10.2

  一次ping是双向的,有来有回

两台均关闭windows防火墙,默认拒绝ping操作 控制面板---》windows防火墙---》打开或关闭windows防火墙---》关闭

网关地址: 路由器(网关设备)上配置 作用:不同网络之间的通信 一个网络连接到另一个网络的关口

DNS服务地址:将域名解析为IP地址 www.qq.com ------> IP地址

HTTP协议(超文本传输协议)

HTTP 协议简介

http请求由三部分组成,分别是:请求行、消息报头、请求正文

请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议版本,格式如下:Method Request-URI HTTP-Version CRLF

http请求方法

– 常用方法 GET,POST,HEAD

– 其他方法 OPTIONS,PUT,DELETE,TRACE和CONNECT

主要特点:

支持客户/服务器模式

简单快速:客户向服务器请求服务时,只需传送请求方法和路径;请求方法常用GET、HEAD、POST等,每种方法规定了客户与服务器联系的不同类型;HTTP协议简单,服务器程序规模小,通信速度较快

灵活:HTTP允许传输任意类型的数据对象;正在传输的数据类型由Content-Type加以标记

无连接:无连接是指每次连接只处理一个请求;服务器处理完客户请求,并收到客户应答后,即断开连接,节省传输时间

无状态:无状态是指协议对于事务处理没有记忆能力;应答较快,但传输数据量较大

HTTP URL:定位网络资源

http://host[:port][abs_path]

HTTP请求

三部分组成:请求行、消息报头、请求正文
格式:Method Request-URI HTTP-Version CRLF
Method:请求方法,GET、POST等
Request-URI:请求的HTTP协议版本
CRLF:回车换行

HTTP响应

由三部分组成:状态行、消息报头、响应正文

状态行格式:HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version:服务器HTTP协议版本

Status-Code:服务器返回的响应状态码

HTTP状态码

由三位数字组成,首数字定义响应类别
1xx:指示信息,表示请求已接收,继续处理;
2xx:成功
3xx:重定向,要完成请求必须进行更进一步的操作;
4xx:客户端错误,请求有语法错误或请求无法实现
5xx:服务器端错误:服务器未能实现合法的请求

常见状态代码

200:OK,请求成功;
400:Bad Request,请求有语法错误,不能被服务器所理解;
401:Unauthorized,请求未经授权;
403:Forbidden,服务器收到请求,但是拒绝提供服务;
404:Not Found,请求资源不存在;
500:Internet Server Error,服务器发生不可预期的错误;
503:Server Unavailable,服务器不能处理客户请求

互联网常见的协议端口号:

http:超文本传输协议 默认端口: 80

https:安全的超文本传输协议 默认端口: 443

ftp:文件传输协议 默认端口: 21

tftp:简单文件传输协议 默认端口: 69

DNS:域名解析协议 默认端口: 53

telnet:远程管理协议 默认端口: 23

smtp:邮件协议(发邮件) 默认端口: 25

pop3:邮件协议(收邮件) 默认端口: 110

snmp:简单的网络管理协议 默认端口: 161

应用层常用协议:HTTP、SMTP、FTP、ping、telnet、DNS、DHCP等

三次握手建立过程

1.客户端发送一个SYN=1,ACK=0标志的数据包给服务端,请求进行连接,这是第一次握手;

2.服务端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让客户端发送一个确认数据包,这是第二次握手;

3.服务端发送一个SYN=0,ACK=1的数据包给客户端,告诉它连接已被确认,这就是第三次握手。TCP连接建立,开始通讯.

 

(1)数据包的关键属性

  SYN :标志位,表示请求建立连接

  Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据

  Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据

四次挥手

 概念:所谓四次挥手就是说关闭TCP连接的过程,当断开一个TCP连接时,需要客户端和服务器共发送四个包确认

第一次挥手:客户端发送一个FIN,用来关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态

第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序 号),服务器进入CLOSE_WAIT状态

第三次挥手:服务器发送一个FIN,用来关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态

第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个AKC给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手

上面是一方主动关闭,另一方被动关闭的情况,实际中还会出现同时发起主动关闭的情况

深入讨论:

1、为什么连接需要三次,关闭的时候需要四次?

        当服务器收到客户端的连接请求后,可以直接发送SYN+ACK报文,其中ACK是确认应答,SYN报文是用来同步的。但  是在关闭连接的时候,当服务器收到FIN的时候,很可能并不会立刻关闭SOCKET,所以只能先回个ACK来应答,只有等服务器把所有报文都发完了才能发送FIN,因此不能一起发送,所有需要四步。

        2、为什么断开链接的时候客户端设置的定时器时间等待要2MSL(两个通信报文的最大时间)?

        当客户端最终告诉服务器断开确认的时候,他不知道自己的发出的指令是否准确的一次性被服务器接收。 

        3、为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

        虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。 

 

原文地址:https://www.cnblogs.com/xujint/p/13188022.html