网络基础学习(一)网络基础

1.七层网络模型

以客户端向服务端发送“hello”为例子,来说明网络传输的过程。

应用层      //用户把字符串“hello”转化成二进制流传输给传输层    [ hello  =》 110110001100101110110011011001101111]

表示层

会话层

传输层     //以TCP为例说明,  [ TCP首部|110110001100101110110011011001101111]

网络层     //以IP协议为例说明,必要时拆分数据    [ IP首部|TCP首部|1101000110010]      [ IP首部|1110110011011001101111]

数据链路层, // 将比特流组合成帧,以帧为单位进行传送  [ 帧首部|数据 ]   [ 帧首部|数据 ]   [ 帧首部|数据 ]

物理层    //通过物理介质进行传输,例如使用电缆,光纤

2.TCP连接的建立与终止

TCP是面向连接的,无论哪一方在向另一方发送数据之前,都必须先在双方之间建立一条连接。

在TCP/IP协议中,TCP协议提供可靠的连接服务,连接时通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号,并交换TCP窗口大小的信息。

待数据传送完毕,TCP通过“四次挥手”来确保双端都断开了连接。

3.Socket 套接字

套接字是支持TCP/IP协议网络通信的基本操作单元,可以将套接字看作不同主机间的进程双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。

下图展示的是一套基本的Socket通信流程。

原文地址:https://www.cnblogs.com/bainbian1234/p/11114308.html

时间: 2024-10-29 17:04:52

网络基础学习(一)网络基础的相关文章

java基础学习总结——网络编程

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——网络编程 一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程. 二.网络通信协议及接口 三.通信协议分层思想 四.参考模型 五.IP协议 每个人的电脑都有一个独一无二的IP地址,这样互相通信时就不会传错信息了. IP地址是用一个点来分成四段的,在计算机内部IP地址是用四个字节来表示的,一个字节代表一段,每一个字节代表的数最大只能到达255. 六.TCP协议和UD

python3基础学习笔记(基础知识)-01

python的基础学习: 数据类型:python是弱类型语言,在定义变量的时候,可以不直接制定数据类型. 1.Numbers: int 有符号整型    a = (-1)  a = 1 long 长整型 float 浮点型 complex 复数 2.boolean: True    Flase 3.String :字符串   a = "Hello World" 4.List :列表 有序  list1 = [] 5.Tuple : 元组  定义后不能被修改  a = (1,2,3) 6

JavaScript基础学习总结2 基础部分

1.JS 命名规范 命名规范是很有必要的,可增强代码的可读性,一眼就能看懂要表达的意思,规范就是符合规则,使代码有利于后期维护,也能很大程度的提高开发效率.一个正常的网站有很多 JS 代码,如果在编写的过程中,不遵循某种规则,那么写到后面自己都看不懂自己写的什么,这是很麻烦的一件事,所以要在平时的练习过程中,养成良好的编写代码的习惯. 一般都采用匈牙利命名法或者驼峰命名法. 匈牙利命名法的原则:变量名=属性+类型+对象描述.他的关键是:以一个或多个小写字母作为前缀,前缀之后是一个或多个首字母大写

java基础学习05(面向对象基础01--类实例分析)

面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过setter和getter设置和取得4.如果需要可以加入若干构造方法 5.再根据其它要求添加相应的方法6.类中的所有方法都不要直接输出,而是交给被调用处调用 Demo 定义并测试一个名为Student的类,包括属性有"学号"."姓名"以及3门课程"数学".

java基础学习05(面向对象基础02)

面向对象基础02 实现的目标 1.String类的使用 2.掌握this关键字的使用3.掌握static关键字的使用 String类 实例化String对象一个字符串就是一个String类的匿名对象,就是已经开辟了堆内存空间的并可以直接使用的对象.1.采用直接赋值的方式进行操作. String name = "zhangsan"; 使用这种方式,如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会再开辟内存空间.2.直接调用String类的构造方法(public S

Java基础学习第二天——基础数据类型介绍

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.21 lutianfei none 第二章 Java基础语法 本章内容 关键字 标识符 注释 常量.进制和进制转换 变量 数据类型和类型转换 运算符 语句 (一)关键字 关键字概述 被Java语言赋予特定含义的单词 关键字特点 组成关键字的字母全部小写 关键字注意事项 goto和const作为保留字存在,目前并不使用(在JDK的新版本中可能提升为关键字) (二)标识符 标识符概述 就是给类,接口,方法,变量等起名

python基础学习笔记——Python基础教程(第2版 修订版)第十章(充电时刻)

#模块 #包 #模块中有什么 dir l列出特性 #文档 print range.__doc__ #阅读源代码 print copy.__file__ #标准库 sys os fileinput #集合,堆和双端队列 set(range(10)) 集合 堆 数据结构 没有独立的 只有一个包含一些堆操作的模块,叫做heapq(6个函数) 双端队列 #time #random #shelve #re #包含对正则表达式的支持

python基础学习笔记——Python基础教程(第2版 修订版)第八章(异常)

#异常 类 #捕捉 try try: x=input(sds) y=input(sd) print x/y except ZeroDivisionError print(0sdf) except TypeErrpr except (ZeroDivisionError,TYpeError) #捕捉对象 except(Zerosion.)as e: print(e) #finally

python基础学习笔记——Python基础教程(第2版 修订版)第一章

#模块 import math math.floor(9) from math import sqrt sqrt(9) #无需使用前缀 import cmath cmath.sqrt(-1) #不能使用from...inport #转义和单双引号 >>>"\"hello,word\"she said" '"hello,word"she said' #使用print不显示引号 #拼接字符串  + #输入 input raw_inp

python基础学习笔记——Python基础教程(第2版 修订版)第12章(图形用户界面)

#丰富的平台 Tkinter wxpython ..... #wxpython import wx app=wx.App() win=wx/Frame(None) win.Show() app.MainLoop() #增加按钮a app=wx.App() win=wx.Frame(None) btn=wx.Button(win) win.Show() app.MainLoop() win=wx.Frame(None,title="simple Editor") loadButton=w