一。网络模型

  OSI七层模型:自上至下依次是 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

    应用层:具体的应用协议如HTTP、SMTP、FTP、TELNET、DNS等

    表示层:针对数据格式,使应用程序不用关心各个主机中的数据格式

    会话层:管理会话,针对通信时机,确定何时建立或断开连接

    传输层:针对数据的传输和具体的建立或断开连接等,TCP、UDP协议

    网络层:寻址和路由,实际上的数据传输任务由网络层完成(发送数据包),单位为包。路由器属于这一层

    数据链路层:物理层上互连的节点之间通信,如同一链路上的主机数据传输服务,单位为帧。交换机在这一层

    物理层:关注怎样在传输媒体上传输数据比特流,单位为比特。集线器在这一层

  TCP/IP模型:自上至下依次是 应用层,传输层,网络层,链路层(网络接口层)

  五层协议模型:自上而下依次是 应用层,传输层,网络层,数据链路层,物理层

二。TCP的三次握手

  基于TCP的通信中,在客户端和服务端进行通信之前,需要进行三次握手以建立连接。

  三次握手流程

  (1)客户端向服务端发送连接请求报文段(SYN包):SYN=1,seq=x

  (2)服务端收到消息后向客户端发送确认应答和建立连接报文(SYN+ACK):SYN=1,ACK=1,seq=y,ack=x+1

  (3)客户端收到消息后再向服务端发送确认应答报文段(ACK包):ACK=1,seq=x+1,ack=y+1

  三次握手的作用

  (1)确定客户端和接收端双方都已具有接收消息和发送消息的功能。

  (2)防止已过期的连接请求报文段(如因阻塞而未及时到达)突然发送到服务器,从而造成错误。

  这也是为什么不是两次握手的主要原因。

  ACK:1个字节,ACK=1时表示有效

  ack:确认号,4个字节,表示希望收到的下一个报文段中第一个字节的编号

  SYN:同步包,SYN=1,ACK=1时表示同意连接;SYN=1,ACK=0时表示连接请求

  seq:序列号,用来标记数据段顺序,报文段中第一个字节的编号

三。TCP的四次挥手

  基于TCP的通信中,在客户端和服务端结束通信之前,需要通过四次挥手来断开连接。

  四次挥手流程

  (1)客户端向服务端发送请求断开连接(FIN包):FIN=1,seq=u

  (2)服务端收到请求后回复确认应答(ACK包):ACK=1,seq=v,ack=u+1

  (3)服务端向客户端发送请求以断开连接(FIN包):FIN=1,seq=w

  (4)客户端收到请求后回复确认应答(ACK包):ACK=1,seq=u+1,ack=w+1

  四次挥手的作用

  因为一方收到另一方的断开连接消息(FIN报文)后,必须先回复一个确认消息(ACK报文),然后才能发送FIN报文

  在收到FIN报文时,服务端的数据可能尚未完全发送完毕,并不需要立即关闭连接。因此,FIN报文和ACK报文通常分开发送?

  FIN:用来释放连接诶,FIN=1表示希望断开连接

四。TCP与UDP的区别

  TCP:面向连接的、可靠的、数据流协议(面向字节流,将数据看作一串无结构的字节流),

     且TCP协议拥有顺序控制、超时重传、拥塞控制等机制;

     只支持一对一通信

  UDP:无连接的、不可靠的(UDP只尽最大能力完成交付)、数据报协议(面向报文)

     支持一对一,一对多,多对多通信

TCP/IP协议学习(一)的更多相关文章

  1. TCP/IP协议学习(五) 基于C# Socket的C/S模型

    TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...

  2. TCP/IP协议学习之实例ping命令学习笔记

    TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...

  3. TCP/IP协议学习(四) 协议概述

    生活中有舒适区,借口成为懒惰的护身符,学习也有舒适区,逃避便是阻止进步的最大障碍. 经过半年多嵌入式方面的工作和学习,我提高了很多,但同时我也对自己所面临的问题逐渐清晰: 1. 偏于实践,理论基础不牢 ...

  4. TCP/IP协议学习笔记

    计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链 ...

  5. tcp/ip协议学习笔记一

    一. 简述 以前在学校学习计算机网络的时候学习多是网络7层模型OSI,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什 ...

  6. TCP/IP协议学习-1.概述

    目录 TCP/IP协议概述 分层 延伸知识 FTP例子 为什么需要网络层和传输层 TCP/IP的分层 封装 分用 总结 本文主要摘抄自书籍<TCP/IP详解卷一:协议>与TCP协议相关内容 ...

  7. TCP/IP协议学习(四) 基于C# Socket的Web服务器---静态资源处理

    目录 1. C# Socket通讯 2. HTTP 解析引擎 3. 资源读取和返回 4. 服务器测试和代码下载 Web服务器是Web资源的宿主,它需要处理用户端浏览器的请求,并指定对应的Web资源返回 ...

  8. TCP/IP协议学习和理解

    TCP:Transmission Control Protocol-传输控制协议 IP:Internet Protocol-网络协议 TCP/IP 不是一个协议,而是一个协议族的统称,里面包括了 IP ...

  9. TCP/IP协议学习

    计算机网路学得不好,首先先放个OSI七层网络模型吧 在协议的控制下,上层对下层进行调用,下层对上层进行服务, 上下层间用交换原语交换信息.这样可以提高传输速率,并且保证数据安全,所以说其实每一层都有存 ...

  10. TCP/IP协议学习(六) 链路层详解

    学习知识很简单,但坚持不懈却又是如此的困难,即使一直对自己说"努力,不能停下"的我也慢慢懈怠了... 闲话不多说,本篇将讲述TCP/IP协议栈的链路层.在本系列第一篇我讲到,TCP ...

随机推荐

  1. Sudoku(POJ2676/3074)

    Sudoku is one of the metaphysical techniques. If you understand the essence of it, you will have the ...

  2. 虚拟机安装+配置federa

    安装 安装好后发现鼠标卡卡的,在虚拟机的显示设置里面启用3D加速: 配置 查看 显卡信息:lspci |grep VGA 测试显卡驱动:glxgears 安装必要软件 安装右键打开终端:sudo yu ...

  3. Layui++>>ajax传递数组,防止深度序列化

  4. vscode调试golang环境搭建及配置

    准备VSCode 在官网下载最新版的VSCode: 安装Golang插件 打开扩展面板 VSCode->查看->扩展 找到Go插件 在搜索框里输入Go, 找到第二行写有 Rich Go l ...

  5. Debian 8.x / Ubuntu 16.04.x 搭建 Ghost 教程

    Ghost 是一款使用 Node.js 开发的博客系统,相对于使用 PHP 开发的 WordPress 更轻巧友好,所以本站已经从 WordPress 切换至 Ghost,本文介绍在 Debian 8 ...

  6. Requests+正则表达式抓取猫眼电影TOP100

    spider.py # -*- coding:utf-8 -*- import requests import re import json import codecs from requests.e ...

  7. 在CentOS 7上安装和使用GlusterFS

    GlusterFS aggregates various storage servers over Ethernet or Infiniband RDMA interconnect into one ...

  8. unigui 1.90.0 Example

    Example//-------------------------------------1:[UNG-2783] - ReCaptcha -------//无法显示 //------------- ...

  9. 《JavaScript 高级程序设计》读书笔记二 使用JavaScript

    一   <script>元素 a.四个属性: async:立即异步加载外部脚本: defer:延迟到文档完全被解析再加载外部脚本: src:外部脚本路径: type:脚本语言的内容类型: ...

  10. MySQL优化--INSERT ON DUPLICATE UPDATE死锁

    INSERT ON DUPLICATE UPDATE与死锁 在MySQL中提供两种插入更新的方式:REPLACE INTO和INSERT ON DUPLICATE UPDATE,简化了“存在则更新,不 ...