TCP的连接(三次握手)和释放(四次挥手)
1 http都设置哪些header?
http协议规定:一个完整的客户端发送给服务端的HTTP请求包括:
(1)请求行:包括了请求方法、请求资源路径、HTTP协议版本,eg:GET/Server/image HTTP/1.1
(2)请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息。
Host:192.168.1.105:8080//客户端想访问的主机地址
User-Agent:Mozilla/5.0 Firefox/3.0 (客户端的类型、客户端的软件环境)
content-Type:文件类型
content-Length:文件长度
[request setValue:@"" forHTTPHeaderField:@""];
(3)请求体:客户端发给服务器的具体数据。
1 HTTP通信过程 - 响应
客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端
HTTP协议规定:1个完整的HTTP响应中包含以下内容
状态行:包含了HTTP协议版本、状态码、状态英文名称
HTTP/1.1 200 OK
响应头:包含了对服务器的描述、对返回数据的描述
Server: Apache-Coyote/1.1 // 服务器的类型
Content-Type: image/jpeg // 返回数据的类型
Content-Length: 56811 // 返回数据的长度
Date: Mon, 23 Jun 2014 12:54:52 GMT // 响应的时间
实体内容:服务器返回给客户端的具体数据,比如文件数据
状态码 |
英文名称 |
中文描述 |
200 |
OK |
请求成功 |
400 |
Bad Request |
客户端请求的语法错误,服务器无法解析 |
404 |
Not Found |
服务器无法根据客户端的请求找到资源 |
500 |
Internal Server Error |
服务器内部错误,无法完成请求 |
2 http与https区别?
http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。
3 TCP的连接(三次握手)和释放(四次挥手)
TCP的连接(三次握手):
第一次握手:客户机的 TCP 首先向服务器的 TCP 发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部 SYN 标志置为1。另外,客户机会随机选择一个起始序号seq=x(连接请求报文不携带数据,但要消耗掉一个序号)
第二次握手:服务器的 TCP 收到连接请求报文段后,如同意连接,就会向客户机发回确认,并为该 TCP 连接分配 TCP 缓存和变量。在确认报文段中,SYN 和 ACK 都置为1,确认号字段为ack = x+1,并且服务器随机产生起始序号seq = y。确认报文段同样不包含应用层数据。
第三次握手:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段 ACK 标志位置为1, 序号字段seq = x+1,确认号字段ack=y+1。
SYN:同步位;seq :起始序号;ack:确认号字段
1)SYN = 1, seq = x
2)SYN = 1, ACK = 1, seq = y, ack = x+1
3)ACK = 1, seq = x+1,ack = y+1
TCP的释放(四次挥手)
第一步:客户机打算关闭连接,就向其 TCP 发送一个连接释放的报文段,并停止发送数据,主动关闭 TCP 连接,该报文段的 FIN 标志位置为1, seq = u,它等于前面已传送过的数据的最后一个字节序号加1.
第二步:服务器收到释放连接的报文段后即发出确认,确认号为ack = u+1,而这个报文段自己的序号seq=v,等于它前面传送过的数据最后一个字节的序号加1。此时,客户机到服务器这个方向的连接就释放了,TCP 连接处于半关闭状态,但服务器发送数据,客户机仍然要接受,即从服务器到客户机这个方向的连接并未关闭。
第三步:若服务器已经没有要向客户机发送的数据,就通知 TCP 释放连接,此时其发出 FIN = 1的连接释放报文段。
第四步:客户机收到连接释放的报文段后,必须发出确认。在确认报文段中,ACK=1,确认号ack=w+1,序号seq=u+1,此时TCP连接还没有释放掉,必须经过实践等待计时器设置时间 2MSL(最长报文段寿命 Maximum Segment Lifetime) 后,进入连接关闭状态。
FIN:终止位;seq :起始序号;ack:确认号字段
1)FIN = 1, seq = u
2)ACK = 1, seq = v, ack = u+1
3)FIN = 1, ACK = 1, seq = w,ack = u+1
4)ACK = 1,seq = u+1, ack = w+1
4 TCP和UDP的区别:
TCP(传输控制协议)
(1)建立连接,形成传输数据的通道
(2)在连接中进行大数据传输(数据大小不收限制)
(3)通过三次握手完成连接,是可靠协议,安全送达
(4)必须建立连接,效率会稍低
UDP(用户数据报协议)
(1)将数据及源和目的封装成数据包中,不需要建立连接
(2)每个数据报的大小限制在64K之内
(3)因为无需连接,因此是不可靠协议
(4)不需要建立连接,速度快
5 OSI参考模型
1)物理层:主要定义物理设备标准,如网线的接口类型、各种传输介质的传输速率等。主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是常说的数模与模数转换)。这一层的数据叫做比特(bit),主要设备:集线器
2)数据链路层:主要将从物理层接收的数据进行MAC地址的封装与解封装。常把这一层的数据叫做帧,主要设备:网卡,交换机
3)网络层:选择合适的网间路由和交换结点, 确保数据及时传送,将从下层接收到的数据进行IP地址的封装与解封装。常把这一层数据叫做数据包,主要设备:路由器。
4)传输层:定义了一些传输数据的协议和端口,如TCP、UDP协议,主要将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,以往把这一层数据叫做段。
5)会话层:通过传输层建立数据传输通路。在系统之间发起会话或者接受会话请求(设备之间需要互相认识)
6)表示层:主要是进行对接收的数据进行解释、压缩与解压缩等,即把计算机能够识别的东西转化成人能够识别的东西(如图片、声音等)
7)应用层:主要是一些终端的应用,比如说FTP(各种文件下载)、浏览器、QQ等,可以将其理解为在电脑屏幕上可以看到的东西,也就是终端应用。
6 常见端口号:
端口号 |
协议 |
关键词 |
UNIX关键词 |
描述 |
1 |
TCP |
TCPMUX |
-TCP |
复用器 |
7 |
TCP/UDP |
ECHO |
echo |
回送 |
21 |
TCP |
FTP |
ftp |
文件传输协议 |
22 |
TCP/UDP |
SSH安全 |
Shell |
远程登录协议 |
23 |
TCP |
TELNET |
telnet |
远程登录 |
25 |
TCP |
SMTP |
smtp |
简单邮件传输协议 |
53 |
TCP/UDP |
DOMAIN |
nameserver |
域名服务器 |
67 |
UDP |
BOOTPS |
bootps |
引导协议服务器 |
68 |
UDP |
BOOTPC |
bootpc |
引导协议客户 |
69 |
UDP |
TFTP |
tftp |
简单文件传送协议 |
79 |
TCP |
FINGER |
finger |
Finger |
80 |
TCP |
HTTP |
http |
超文本传输协议 |
7 网络中常见的“ping”命令是什么协议?
ping.exe 的原理,向指定的IP地址发送一定长度的数据包,按照约定,若指定IP地址存在的话,会返回同样大小的数据包,当然,若在特定的时间内没有返回,就是“超时”,就认为指定的IP地址不存在。由于ping使用的是ICMP协议(Internet Control Message Protocol)(Internet控制消息协议),有些防火墙软件会屏蔽ICMP协议,所以有时候ping的结果只能作为参考,ping不通过不一定说明对方IP不存在。