网络协议

计算机网络的核心就是网络协议。网络协议是计算机网络中为了数据交换而建立的规则。

OSI七层模型和TCP/IP五层模型

在实际运用中,最终是TCP得到了广泛的应用。

OSI是一种设计得非常详细的协议,而问题就是出在详细上;因为实际的情况往往比想象中的更加多变和灵活,所以OSI的详细本该成为它的优势,但却成为了其限制。

王老师的思想迁移:不光是这种协议的发展规律,生活中很多事情都是这样,不能等完完全全准备好了再去做,而是在做的过程中不断改进,不断适应,就TCP/IP一样,虽然更加简单,但却能经受实际的考验。

TCP/IP五层模型

  • 应用层(HTTP)
  • 传输层(TCP,UDP)
  • 网络层(IP)
  • 数据链路层
  • 物理层

TCP的三次握手和四次挥手

三次握手进行连接

SYN:标志位,为1时表示请求连接

ACK:标志位,为1时表示确认请求

第一次握手:客户端向服务端发送SYN为1的请求报文

第二次握手:服务端向客户端发送ACK消息确认【此时客户端知道自己可以发送消息给服务端,而且服务端也可以发送消息给自己;但服务端只知道客户端的消息可以传过来,但不知道自己的消息能否传过去】

第三次握手:客户端向服务端发送ACK消息确认【目的:让服务端知道自己发送的消息客户端可以接收到】

四次挥手断开连接

FIN:标志位,为1时表示请求断开连接

第一次挥手:客户端向服务端发送FIN=1的报文

第二次挥手:此时服务端可能会有未发出的消息,所以先给客户端一个ACK确认消息,表示收到了客户端的请求

第三次挥手:此时服务端已经发送了所有的消息,然后向客户端发送一个FIN=1的报文,表示可以断开请求了

第四次挥手:客户端收到请求后,给服务端发送ACK确认消息

TCP连接的特点

  • TCP是一种有连接,安全可靠的协议
  • 点对点的通信模式
  • 在传输可靠上的特性:丢包重发,流量控制

TCP是如何保证安全可靠的

宏观上来看,三次握手和四次挥手的这种有连接的机制为TCP的安全提供了基础。

更加微观的看

  • 校验和(TCP头部,数据,尾部)
  • 应答机制:不管是对于客户端还是服务端,每发送一个消息都需要返回一个确认消息,不然就会重发
  • 超时重传:发送一个包和接受应答包这个时间如果过长,就会重新发送
  • 拥塞控制:发出少量数据来测试网络拥堵情况,然后决定按多大的速度传送数据

UDP连接的特点

  • UDP是一种无连接,不可靠的协议

  • 支持一对多,多对多的通信模式

TCP和UDP的区别

  • 是否有连接

    TCP是有连接的,而UDP是无连接的。连接决定是否安全可靠。

  • 传输效率

    UDP首部字节为8个,而TCP首部字节20个。所以UDP的传输效率更高。

  • 通信模式

    TCP支持点对点,UDP支持一对多,多对多

TCP和UDP首部的区别

  • UDP首部只有8个字节:源端口,目的端口,校验和
  • TCP超过20个字节:源端口,目的端口,校验和,SYN,ACK,FIN

HTTP请求的过程和原理

  • 发起一个请求后,通过DNS将URL中的域名解析为IP地址
  • 然后根据IP地址,建立与服务端的TCP连接(三次握手)
  • 断开连接:四次挥手

TCP/IP速记的更多相关文章

  1. TCP/IP基础

    TCP/IP 是用于因特网 (Internet) 的通信协议. 计算机通信协议是对那些计算机必须遵守以便彼此通信的规则的描述. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的 ...

  2. TCP/IP之TCP_NODELAY与TCP_CORK

    TCP/IP之Nagle算法与40ms延迟提到了Nagle 算法.这样虽然提高了网络吞吐量,但是实时性却降低了,在一些交互性很强的应用程序来说是不允许的,使用TCP_NODELAY选项可以禁止Nagl ...

  3. 《图解TCP/IP》读书笔记

    一.国际惯例:书托 这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识.掌握TCP/IP的基本技能. 书中讲解了网络基础知识.TCP/IP基础知识.数据链路.IP协议.IP协 ...

  4. Atitit osi tcp ip 对应attilax总结

    Atitit osi tcp ip 对应attilax总结 Atitit 网络摄像机又叫IP CAMERA(简称IPC)常见的协议组合 网络摄像机又叫IP CAMERA(简称IPC)由网络编码模块和模 ...

  5. 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结

    门面模式的一个典型应用:Socket 套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: 连接使用的 ...

  6. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

  7. 一种面向对象的TCP/IP中间件

    这是一个使用C++封装的TCP/IP协议栈(仅传输层),属于本人所设计的中间件的一员,具有硬件无关,应用无关特性,使用非常方便,一看代码便知: #include "net.h" / ...

  8. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  9. TCP/IP协议(一)网络基础知识

    参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...

随机推荐

  1. vue : 无法加载文件 C:\Users\ui61895076\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。

    说白了就是这个编辑器不能用罢了 执行以下代码 1.鼠标右击以管理员身份运行vscode; 2. 执行:get-ExecutionPolicy,显示Restricted,表示状态是禁止的; 3. 执行: ...

  2. OSCP Learning Notes - Netcat

    Introduction to Netcat Connecting va Listening Bind Shells Attacker connects to victim on listening ...

  3. mybatis自动生成代码插件mybatis-generator使用流程(亲测可用)

    mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间 坐着在idea上用maven构建spri ...

  4. GEDIT外部工具

    首先通过编辑-首选项-插件-外部命令来打开外部命令,然后在工具-Manage External Tools来添加新工具,工具代码使用bash语言. 代码使用方式:+添加新插件,在编辑框中粘贴代码,快捷 ...

  5. [redis] -- 为什么那么快

    1 完全基于内存 2 数据结构简单,对数据操作也简单 3 只有单线程,避免了不必要的上下文切换,也不存在竞态,不存在多进程或多线程导致的切换而消耗CPU,不用开了各种锁的问题 4 使用多路IO复用模型 ...

  6. 部署一套完整的Kubernetes高可用集群(二进制,v1.18版)

    一.前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm ...

  7. unittest学习笔记

    File "C:\Program Files\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py&quo ...

  8. DICOM 相关概念了解

    前言:       正如前述文章中提到的,DICOM(Digitial Image Communications in Medicine)是所有从事医学影像处理的工作者需要了解的最基本的图像格式. 假 ...

  9. RecyclerView设置空视图

    RecyclerView貌似不能直接设置空视图,所以可以自定义一个RecyclerView继承自RecyclerView并设置一个数据监听者监视数据状态. MyCyclerView.java pack ...

  10. react 阻止事件传递/冒泡

    当我们设计界面时,在以下情况会需要阻止元素/组件内的事件阻断,不被上层触发: 弹出提示框,期望点击框外空白区域可以关闭弹框.点击框内不关闭弹框 组件设计时,期望点击全局/点击指定元素时,显示不一样的交 ...