一。网络模型

  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. 线程中的join方法

    join方法的作用是同步线程. 1.不使用join方法:当设置多个线程时,在一般情况下(无守护线程,setDeamon=False),多个线程同时启动,主线程执行完,会等待其他子线程执行完,程序才会退 ...

  2. @RequestParam与@PathVariable

    @PathVariable 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义 通过 @PathVariable 可以 ...

  3. Windows下 tensorboard出现ValueError:Invalid format string

    Windows下 tensorboard出现ValueError:Invalid format string错误时,是格式错误问题,解决方法参阅我的另一篇博客 https://www.jianshu. ...

  4. [Java源码解析] -- String类的compareTo(String otherString)方法的源码解析

    String类下的compareTo(String otherString)方法的源码解析 一. 前言 近日研究了一下String类的一些方法, 通过查看源码, 对一些常用的方法也有了更透彻的认识,  ...

  5. parrot os 安装后更改更新源

    parrot os 安装后 parrot os 自带的更新源更新速度太慢(需要几个小时) 提供如下更新源 中国 USTC(中国科学技术大学和USTCLUG) - 合肥大学 CMCC 1 Gbps Ce ...

  6. C++ 使用Lambda

    基础使用: C++中的Lambda表达式详解 c++11的闭包(lambda.function.bind) C++ lambda作为函数参数,实现通用的查找接口 C++11系列-lambda函数 进阶 ...

  7. email program (客户端)演变过程有感

    以下内容全部为个人读后感(参考百度百科的相关资料) 首先我认为电子邮件是一个非常伟大的发明,它不仅成本低,而且传输效率快! 关于它的起源,我从百度百科中看到了两种说法     1.1969年10月世界 ...

  8. MySQL--Insert Buffer

    在进行数据插入时,需要将数据插入到聚集索引和非聚集索引中,而对于非聚集索引,需要先确定数据要插入的索引页,再将索引页加载到内存中进行修改,而在业务上很难保证插入数据在非聚集索引上也是连续的,因此插入操 ...

  9. Jenkins pipeline 并行执行任务流

    笔者在<Jenkins 在声明式 pipeline 中并行执行任务>一文中介绍了如何在声明式 pipeline 中执行并行的任务.前一段时间,Jenkins 发布了 1.3 版的声明式 p ...

  10. Java中的NIO基础知识

    上一篇介绍了五种NIO模型,本篇将介绍Java中的NIO类库,为学习netty做好铺垫 Java NIO 由3个核心组成,分别是Channels,Buffers,Selectors.本文主要介绍着三个 ...