网络中的 TCP/IP

TCP/IP

OSI的“实现”:TCP/IP

OSI七层模型

TCP/IP概念层模型

功能

TCP/IP协议族

应用层

应用层

文件传输、电子邮件、文件服务、虚拟终端

FTP,HTTP,SMTP,SNMP,Telnet

表示层

数据格式化、代码转换、数据加密

会话层

解除或建立与别的接点的连接

传输层

传输层

提供端对端的接口

TCP,UDP

网络层

网络层

为数据包选择路由

IP,ICMP,RIP,OSPF,IGMP

数据链路层

链路层

传输哟偶地址的帧以及错误检测功能

SLIP,CSLIP,PPP,ARP,RARP

物理层

以二进制数据形式在物理媒体上传输数据

ISO2110,IEEE802,IEEE802.2

 

常用的TCP端口号有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;常用的保留UDP端口号有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。

TCP的三次握手

TCP Flags

      URG:紧急指针标志

      ACK:确认序号标志

      PSH:push标志

      RST:重置连接标志

      SYN:同步序号,用于建立连接过程

      FIN:finish标志,用于释放连接(1:发送方已无数据发送)

“握手”是为了建立连接,TCP三次握手的流程图如下:

 

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用3次握手建立一个连接。(sequence number 即上图中x ,y值)

1、第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。

2、第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。

3、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTAB_LISHED状态,完成三次握手。

谈谈TCP的四次挥手

挥手是为了终止连接,TCP四次挥手的流程图如下:

 

TCP采用四次挥手来释放连接

1、第一次挥手:client 发送一个FIN,用来关闭client到server的数据传送,client进入FIN_WAIT_1状态。

2、第二次挥手:server收到FIN后,发送一个ACK给client,确认序号为收到的序号加1(与SYN相同,一个FIN占用一个序号),server进入CLOSE_WAIT状态。

3、第三次挥手:server发送一个FIN,用来关闭server到client的数据传送,server进入LAST_ACK状态。

4、第四次挥手:client收到FIN后,client进入TIME_WAIT状态,接着发送一个ACK给server,确认序号为收到的序号+1,server进入CLOSED状态,完成四次挥手。(client在2MSL时间之后也会关闭)

TCP连接必须经过2MSL后才真正的释放?

确认有足够的时间让对方收到ACK包

   避免新旧连接混淆

UDP简介

UDP特点

1、面向非连接

2、不维护连接状态,支持同时向多个客户端传输相同的消息

3、数据包报头只有8个字节,额外开销较小

4、吞吐量只受限于数据生成速率、传输速率以及机器性能

5、尽最大努力交付,不保证可靠交付,不需要维持复杂的链接状态表

6、面向报文,不对应用程序提交的报文信息进行拆分或者合并

结论

      TCP             UDP

1、面向连接    vs    无连接

2、可靠性     vs     无

3、有序性     vs     无

4、速速慢      vs     快(适用于在线媒体  广播等)

5、量级(20个字节)     vs     8个字节

  

TCP的滑动窗口

RTT和RTO

   RTT:发送一个数据包到收到对应的ACK,所花费的时间

   RTO:重传时间间隔(客户端发送一个ack时默认启动一个定时器,服务器在一定的时间没有返回相应的包时启动定时器从新发送一个)(经过RTT计算出RTO)

HTTP简介

超文本传输协议HTTP主要的特点

1、支持客户/服务器模式

2、简单快速

3、灵活(传输任意类型数据)

4、无连接(每次连接限制一个请求,服务器处理完客户请求并收到客户应答之后即断开,节省传输时间。http1.1默认使用长连接服务器默认等待一定时间后才断开连接,以保证连接特性)

5、无状态(协议对事物的处理没有状态)

请求/响应的步骤

1、客户端连接到Web服务器

2、发送HTTP请求

3、服务器接收到请求并返回HTTP响应

4、释放连接TCP连接

5、客户端浏览器解析HTML内容

在浏览器输入URL按下回车经历的流程

1、DNS解析

2、TCP连接(找到IP地址和端口后和服务器建立TCP连接)

3、发送HTTP请求

4、服务器处理请求并返回HTTP报文

5、浏览器解析渲染页面

6、连接结束

HTTP状态码

五种可能的取值

1、1××:只是信息—表示请求已接收,继续处理

2、2××:成功—表示请求已被成功接收、理解、接受

3、3××:重定向—要完成请求必须进行更进一步的操作

4、4××:客户端错误—请求语法错误或请求无法实现

5、5××:服务器端错误—服务器未能实现合法的请求

常见的状态码

1、200:正常返回信息 – 成功

2、400(bad request):客户端请求语法错误,不能被服务器所理解

3、401(unauthorized):请求未经授权,这个状态代码必须和www-authorized报头域一起使用

4、403(forbidden):服务器收到请求但是拒绝提供服务

5、404(not found):请求资源不存在

6、500(internal server error):服务器发生不可预期的错误

7、503(server unavailable):服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

  

POST请求和GET请求

三个层面来解答

1、HTTP报文层面:GET将请求信息放在URL,POST放在报文体中

2、数据库层面:GET符合幂等性(对数据库的一次操作和多次操作是一致的)和安全性,POST不符合

3、其他层面:GET可以被缓存、被存储,POST不行

Cookie和Session的区别

Cookie的简介

1、是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端

2、客户端再次请求的时候,会把cookie回发

3、服务器收到后,会解析cookie生成与客户端相对应的内容

Cookie的设置以及发送过程

 

Session的简介

1、服务器的机制,在服务器上保存的信息

2、解析客户请求并操作session id ,按需保存状态信息

Session的实现方式

    使用cookie来实现

 

Cookie和Session的区别

1、cookie数据存放在客户的浏览器上,session数据存放在服务器上

2、session相对于cookie更安全

3、考虑到减轻服务器的负担,应当使用cookie

HTTP和HTTPS的区别

1、HTTPS需要到CA申请证书,HTTP不需要

2、HTTPS密文传输,HTTP明文传输

3、连接方式不同,HTTPS使用443端口,HTTP使用80端口

4、HTTPS = HTTP + 加密 + 认证 + 完整性保护,较HTTP安全

Socket简介

 

常用的TCP端口号有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;常用的保留UDP端口号有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。

猜你喜欢

转载自www.cnblogs.com/long88-club/p/11415296.html