当前位置: 首页 > ai >正文

计算机网络:网络基础、TCP编程

一、计算机网络学习计划

        1.网络基础 + tcp编程 
2.udp编程 
3.http + 小项目 
------------------
4.服务器编程 
5.数据库 
6.html
7.在线商城

二、网络基础

(一)目的:实现不同主机进程间通信

(二)TCP/IP协议:实现不同硬件体系结构、不同软件间的通信

(三)IP地址:用来唯一的标识一台主机

        1.   IPv4 地址 . . . . . . . . . . . . : 192.168.0.150
子网掩码  . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.0.1

        2.IP = 网络号+主机号

        3.IP本质为32位的数值,用点分十进制转换而来

        3.子网掩码与IP地址相与来区分网络

        4.www.baidu.com --DNS(域名解析)-->  183.2.172.17 
|
V
子网掩码 255.255.255.0
|
V
是           不是 
|               |
发到局域网     发到外网

(四)通信分层

        1.通信:物理链路、逻辑链路

        2.三类分层

        

        3.OSI模型(开放的系统互联模型)

                7     应用层    //你好 
6     表示层    //压缩 加密 
5     会话层    //管理一次通信过程 
4     传输层    //传输过程中网络信息 控制 
3     网络层    //网络间如何通信 
2    数据链路层 //01组合的数据帧 
1     物理层   //物理通信 电气特性 

        4.OSI模型

                4.1.物理层:①主要定义物理设备标准:网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。②主要作用是: [传输比特流](就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。③这一层的数据叫做"比特"(bit)。

               4.2.数据链路层:①定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1②这一层传输的数据:帧数据 (按到一定格式组织起来的一组数据)
4.3.网络层:(路由器)①在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。 如:常见的路由器,就是这在一层工作。②这一层传递的数据:数据段(包) 
4.4.传输层:transmit control ①定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。②常常把这一层数据叫做段。

               4.5.会话层:①通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。 ②主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。如:上网,看视频。刷新 --- 好了!
4.6.表示层:①可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。②如有必要,表示层会通过使
用一种通格式来实现多种数据格式之间的转换。
4.7.应用层:①是最靠近用户的OSI层。②这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

三、socket

(一)socket

        1.socket是网络通信的特殊文件 
2.socket也是linux系统提供的一个编程接口 ,通过这个编程接口,就可以使用到linux的网络功能 

        3.socket函数

四、传输层的协议:TCP、UDP

(一)TCP

        1.TCP(transmision control protocol):(类似 打电话)---可靠(1.连接 2.可靠传输 3.字节流)
①特点:
a.面向连接(就是在进行通信之前,必须建立好一条逻辑上的通路)
b.提供可靠传输(四个"无",无丢失,无失序,无差错,无重复)

            ②建立连接: 
tcp三次握手 目的:建立连接

                        client      ------------------  server
1           -- 我要通话     -->  1   //连接的请求 
2           <--嗯,我知道了,你可以-- //对方接听电话 喂 
3            -- 嗯,好的     -->     //喂 

            ③应用场合:
(1). 对可靠性要求较高场合
(2). QQ微信等 软件的登录时

        2.TCP(即传输控制协议):①是一种面向连接的传输层协议,它能提供高可靠性通信(即数
据无误、数据无丢失、数据无失序、数据无重复到达的通信)
②适用情况:
a. 适合于对传输质量要求较高,以及传输大量数据的通信。
b. 在需要可靠数据传输的场合,通常使用TCP协议
c. MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

(二)UDP

        1.UDP(User datagram Protocol):(类似 生活中的广播) (1.不可靠, 2.无连接 3.数据报)
① 特点:
a.不提供可靠传输,
b.在数据发送时,不需要建立连接
②应用:
(1).小数据,但是对速度要求较高(QQ.及时文本信息,语音等),实时性要求较高合!
(2).广播,组播   //电子教师(vnc --- 广播)
(3).无线网的传输 //udp 

        2.UDP(User Datagram Protocol)用户数据报协议:①是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
②适用情况:
a. 发送小尺寸数据(如对DNS服务器进行IP地址查询时)

                b. 在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)
c. 适合于广播/组播式通信中。
d. MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
e. 流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输

五、基于TCP和UDP网络编程

(一)通信模式

(二)TCP cs模型

(三)函数接口

        1.connect(客户端)

端口号、配套函数:

①端口号:16位的整型数据 

  0~1023                 //1024 ---知名端口号 
//http -- 80 
1024~50000         //特定端口号 
50000~                 //临时分配的端口号 

②发送的用到的函数

大小端:            发送 --- 转换 --- 网络字节序 (大端)
接收 --- 根据主机的大小端转换 

        2.bind(服务器端)

        3.accept(服务器端)

http://www.xdnf.cn/news/18334.html

相关文章:

  • 如何自定义一个SpringBoot Starter
  • 密码管理中明文密码与空密码的危害与预防
  • 继承(Inheritance)
  • 机器学习集成算法与K-means聚类
  • Pytest 插件怎么写:从0开发一个你自己的插件
  • 14. 多线程(进阶1) --- 常见的锁策略和锁的特性
  • 【Protues仿真】基于AT89C52单片机的数码管驱动事例
  • Windows下,将本地视频转化成rtsp推流的方法
  • strcasecmp函数详解
  • AI模型部署 - 大语言模型(LLM)部署技术与框架
  • js来比较两个对象内容有误差异
  • mysql数据库学习
  • 想在手机上操作服务器?cpolar让WaveTerminal终端随身携带,效率倍增
  • 【Springboot进阶】Java切面编程对性能的影响深度分析
  • 【Ruoyi解密-02.登录流程:】登录-找密码不抓瞎
  • selenium3.141.0执行JS无法传递element解决方法
  • Linux的奇妙冒险——进程间通信(管道、SystemV IPC)
  • 完全背包(模板)
  • webrtc中win端音频---windows Core Audio
  • 2025图表制作完全指南:设计规范、工具选型与行业案例
  • Chrome/360 浏览器扩展深度解析:内置扩展与普通扩展的实现机制对比
  • (栈)Leetcode155最小栈+739每日温度
  • 力扣 30 天 JavaScript 挑战 第37天 第九题笔记 知识点: 剩余参数,拓展运算符
  • Spring Boot集成腾讯云人脸识别实现智能小区门禁系统
  • 【C++去除整数某一位数字求新数和倍数保留2位小数控制】2022-10-22
  • 人工智能 -- 循环神经网络day1 -- 自然语言基础、NLP基础概率、NLP基本流程、NLP特征工程、NLP特征输入
  • 打造医疗新质生产力
  • 如何用算力魔方4060安装PaddleOCR MCP 服务器
  • visual studio更改git提交的用户名和邮件
  • Seaborn数据可视化实战:Seaborn基础与实践-数据可视化的艺术