您的位置:首页 > 理论基础 > 计算机网络

TCP的连接(三次握手)和释放(四次挥手)

2016-09-28 12:14 381 查看
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不存在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: