请简述TCP和UDP的区别
TCP和UDP都是OSI模型中运输层中的协议,
TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
- TCP 是面向连接的,UDP 是面向无连接的
- UDP程序结构较简单
- TCP 是面向字节流的,UDP 是基于数据报的
- TCP 保证数据正确性,UDP 可能丢包
- TCP 保证数据顺序,UDP 不保证
为什么TCP可靠而UDP不可靠
-
通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
-
TCP 报文头里面的序号能使 TCP 的数据按序到达
-
报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
-
TCP 拥有流量控制及拥塞控制的机制
请简单说一下你了解的端口及对应的服务
- 21端口:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。
- 25端口:25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。
- 53端口:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。
- 80端口:80端口是为HTTP(HyperText Transport Protocol,超文本传输协议)开放的,这是上网冲浪使用最多的协议,主要用于在WWW(World Wide Web,万维网)服务上传输信息的协议。
TCP三次握手
三次握手指的是:建立一个TCP连接时,需要客户端和服务器总共发送三个包。
三次握手的目的是:连接服务器的指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小。
- 第一次握手:建立连接,客户端向服务器发送请求报文段,将SYN置为1,客户端进入SYN_SEND状态,等待服务器确认
- 第二次握手:服务器接收到客户端的SYN 报文段,对这个SYN报文段进行确认;同时自己发送SYN请求信息,将SYN置为1;服务器将上述所有信息放入报文段(SYN+ACK)一起发送给客户端,此时服务器进入SYN_RECV状态
- 客户端接收到SYN+ACK报文段,向服务器发送ACK报文段,发送完毕后客户端和服务器都进入ESTABLISHED状态,完成三次握手
TCP四次挥手
- 第一次挥手:客户端数据传输完毕需要断开连接,发送报文段并停止再次发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态
- 第二次挥手:服务器接收到客户端发送的报文段后,进入关闭等待状态,客户端到服务器的连接释放,客户端收到服务器的确认后,进入FIN-WAIT-2状态,等待服务器发出连接释放的报文段
- 服务器的数据传输完毕后,向客户端发送连接释放报文段,服务器进入最后确认状态,等待客户端的确认
- 客户端收到服务器的连接释放报文段后,发出确认报文段,进入等待状态,经过等待时间后进入关闭状态,四次握手结束
从输入网址到显示网页的全过程
- 输入网址
- DNS域名解析,将url解析为ip地址
- 客户端与服务器建立TCP连接
- 客户端向服务器发送HTTP请求
- 服务器处理客户端发来的请求
- 服务器响应请求,返回给浏览器一个响应
- 浏览器解析响应,展示HTML
IP地址分为哪几类?简单说一下各个分类
OSI七层模型
TCP/IP四层模型
HTTP 协议包括哪些请求
- GET:对服务器资源的简单请求
- POST:发送包含用户提交数据的请求
- HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
- PUT:用来传输文件,要求在请求报文的主体中包含文件内容,然后保存到请求的URI指定位置
- DELETE:与PUT相反,用来删除文件,按照请求删除指定的资源
- TRACE:让服务器将之前的请求通信环返回给客户端
- CONNECT:与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信
HTTP响应状态码
-
200
从客户端发来的请求在服务器端被正常处理了 -
204
服务器接收的请求已被成功处理,但在返回的响应报文中不包含实体的主体成分 -
206
客户端向服务器成功请求指定范围的实体内容 -
301
请求的资源已经被永久的移动到新的URI,以后新的请求应该使用新的URI代替 -
302
资源临时移动,客户端应继续使用原有的URI -
303
请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源 -
302
客户端发送附带条件的请求时,服务器允许访问资源,但是并没有返回任何实体 -
400
客户端请求的语法错误,服务器无法理解 -
401
请求需要有通过HTTP认证的认证信息 -
403
请求资源的房屋内被服务器拒绝了 -
404
服务器上无法找到请求的资源 -
500
服务器内部错误,无法完成请求 -
503
服务器暂时处于超负载或正在进行停机维护,现在无法处理请求