美文网首页Netty专栏
计算机网络基础

计算机网络基础

作者: 千淘萬漉 | 来源:发表于2019-08-25 16:23 被阅读0次

一.OIS七层模型

OSI七层模型

二.TCP、IP协议

TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)

1.TCP三次握手:

三次握手流程
  • 第一次握手
    客户端向服务器发出连接请求报文,这时报文首部中的同部位SYN=1,同时随机生成初始序列号 seq=x,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。这个三次握手中的开始。表示客户端想要和服务端建立连接。

  • 第二次握手
    TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己随机初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。这个报文带有SYN(建立连接)和ACK(确认)标志,询问客户端是否准备好。

  • 第三次握手
    TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。这里客户端表示我已经准备好。

为何需要三次确认?
client发送了第一个连接的请求报文,但是由于网络不好,这个请求没有立即到达服务端,而是在某个网络节点中滞留了,直到某个时间才到达server,本来这已经是一个失效的报文,但是server端接收到这个请求报文后,还是会想client发出确认的报文,表示同意连接。假如不采用三次握手,那么只要server发出确认,新的建立就连接了,但其实这个请求是失效的请求,client是不会理睬server的确认信息,也不会向服务端发送确认的请求,但是server认为新的连接已经建立起来了,并一直等待client发来数据,这样,server的很多资源就没白白浪费掉了,采用三次握手就是为了防止这种情况的发生,server会因为收不到确认的报文,就知道client并没有建立连接。这就是三次握手的作用。

2.TCP四次挥手

四次挥手流程
  • 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传输,Client进入FIN_WAIT_1;
  • 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入CLOSE_WAIT状态;
  • 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传输,Server进入LAST_ACK状态;
  • 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

为什么需要四次挥手才能断开连接?
因为全双工,发送方和接收方都需要FIN和ACK报文才会断开连接。

source: 计算机网络面试核心知识点梳理

三.Http协议

在另外一篇博客里进行了详细描述:java web基础篇——Http协议

相关文章

  • 2018-05-04

    计算机网络基础 IPv4报头

  • HTTP知识

    HTTP知识 [TOC] 1.计算机网络各层基础 计算机网络各层: 计算机网络各层作用: 2. HTTP简介 HT...

  • 懂这些面试还能过不了?(Android网络相关知识点)

    1. 详细计算机网络基础 关于计算机网络的一些基础 2. 描述一次网络请求的流程 域名解析 -----> TCP的...

  • 网络相关知识

    计算机基础知识掌握TCP和HTTP相关知识即可。 这是一份详细 & 清晰的计算机网络基础 学习指南计算机网络:这是...

  • 这是一份详细 & 清晰的计算机网络基础 学习指南

    前言 计算机网络基础 该是程序猿需掌握的知识,但往往会被忽略 今天,我将献上一份详细 & 清晰的计算机网络基础 学...

  • 计算机网络基础知识详细介绍

    考虑到后面的Python课程学习,我们这里把计算机网络基础分为四个板块来给讲解一下。分别是:计算机网络基础、IP地...

  • 1 计算机网络之初窥面目

    本部分包括了计算机网络概述部分,以及通信基础部分~ 1.1 什么是计算机网络? 一:计算机网络的定义: 二:计算机...

  • 计算机基础

    计算机基础操作系统计算机网络

  • 思维导图

    java基础计算机网络操作系统知识产权多媒体基础web分布式linuxhbasestormredisMongoDB...

  • iOS开发笔记 - 网络篇

    计算机网络基础## 计算机网络是多台独立自主的计算机互联而成的系统的总称,最初建立计算机网络的目的是实现信息传递和...

网友评论

    本文标题:计算机网络基础

    本文链接:https://www.haomeiwen.com/subject/qunxectx.html