美文网首页
Socket进阶1之网络编程基础

Socket进阶1之网络编程基础

作者: 香沙小熊 | 来源:发表于2019-12-12 16:04 被阅读0次

什么是网络、计算机网络的构成是什么?

网络:在计算机领域中,网络是信息传输、接收、共享的虚拟平台
通过它把各个店、面、体的信息联系到一起,从而实现这些资源的共享

什么是网络编程

  • 网络编程从大的方面说就是对信息的发送到接受
  • 通过操作相应Api调度计算机硬件资源,并利用传输管道(网线)进行数据交换的过程
  • 更为具体的涉及:网络模型、套接字、数据包

7层网络模型-OSI

7层网络模型-OSI
1、物理层:(网卡)

定义:物理层不是具体的物理设备,而是定义物理设备的标准,比如网线的类型,光纤的类型,各种传输介质的传输速率这样的参数。

主要作用:
传输比特流,01011100101... 转化成电流大小强弱 再转化成比特流 0100111... (数模转换,模数转换)

2、数据链路层:(交换机)

定义:
从物理层传来的比特流可能传输有错,或者传输漏掉。所以有了数据链路层。

主要作用:
格式化数据,提供错误检测和纠正。保证数据的可靠性。将比特流组合成字节,再将字节组合成帧。交换机对帧解码,并根据帧中包含的信息发送出去。

3、网络层:(路由器,IP协议)

定义:
从数据链路层发送来的数据多个节点发送到目的地,那如何知道目的节点是哪个,最佳路径是什么?然后有了网络层。

主要作用:
将网络地址翻译成物理地址,决定了如何将数据从起始地发送到目的地。通过 发送优先权、网络拥塞程度、服务质量、可选路由花费,决定从节点A到节点B的最佳路径。此层数据——>数据包。

4、传输层:(OSI模型中最重要的一层,TCP协议,UDP协议)

定义:
随着网络通信需求的进一步扩大,通信过程需要发送大量数据比如海量文件。数据一旦多,所需时间自然很长。而网络在通信过程中会中断好多次。为了保证大量文件的准确性,需要对数据进行切分,切割为一个一个的段落进行发送。那么如果有段落漏掉了怎么办?重传?段落之间是否需要按照切割顺序到达节点?然后有了传输层。

主要作用:
解决了不同网络之间主机的数据传输,并解决了传输质量的问题。传输协议,流量控制,基于接收方可接受数据的快慢程度规定适当的发送速率。按照网络能够处理的最大尺寸将数据切割(以太网无法接收大于1500字节的数据包)。传输层将数据切割之后,对每一个数据片安排一个序列号。以便数据到达接收方的传输层时,能以正确的顺序重组。TCP:传输控制协议。UDP:用户数据包协议。

5、会话层:

定义:
封装过后的信息已经可以发送到接收方,但现在每次还需要TCP去打包,IP去找路由。这样当然不行,所以建立一个自动收发包,自动寻址的功能。这就是会话层。

主要作用:
建立和管理应用程序之间的通信。会话层使用校验点,在通信会话失效时从校验点恢复通信,这种能力对于传输大文件很重要。

6、表示层:

定义:
当解决不同系统之间通信的语法问题(比如windows和linux)。有了表示层。

主要作用:

数据将按照网络能理解的方案进行格式化,格式化因网络所使用的类型不同而不同。

7、应用层:(HTTP协议)

定义:
发送方现在已经知道自己发的是什么东西,转化成字节有多长。但是接收方不知道,所以应用层的网络协议诞生了。

主要作用:
规定发送方和接收方必须使用固定长度的消息头。消息头必须使用某种固定的组成。而且消息头里必须记录消息体的长度等一系列信息。方便接收方能够解析发送方发送的数据。

7层网络模型-编程

  • 基础层:物理层(Physical)、数据链路层(Datalink)、网络层(Network)
  • 传输层(Transport):TCP-UDP协议层、Socket
  • 高级层:会话层(Session)、表示层(Presentation)、应用层(Application)

Socket与TCP、UDP

什么是Socket
  • 简单来说是ip地址与端口的结合协议(RFC 793)
  • 一种地址与端口的结合描述协议
  • TCP/IP协议的相关API的总称;是网络Api的集合实现
  • 涵盖了:Stream Socket / Datagram Socket

Socket的作用与组成

  • 在网络传输中用于唯一标示两个端点之间的链接
  • 端点:包括(IP + Port)
  • 4个要素:客户端地址、客户端端口、服务器地址、服务器端口

IP Address + Port number = Socket

Socket 之 TCP

  • TCP是面向链接的通信协议
  • 通过三次握手建立连接,通讯完成时要拆除连接
  • 由于TCP是面向连接的所以只能用于端到端的通讯

Socket 之 UDP

  • UDP是面向无连接的通讯协议
  • UDP数据包括目的端口号和源端口号信息
  • 由于通讯不需要连接,所以可以实现广播发送,并不局限于端到端

Client-Sever Application

  • TCP/IP协议中,两个进程间通信的主要模式为:CS模型
  • 主要目的:协同网络中的计算机资源、服务模式、进程间数据共享
  • 常见的:FTP、SMTP、HTTP

相关文章

  • Socket进阶1之网络编程基础

    什么是网络、计算机网络的构成是什么? 网络:在计算机领域中,网络是信息传输、接收、共享的虚拟平台通过它把各个店、面...

  • 动脑学院架构篇-Java Socket编程基础及深入讲解

    【Socket】Java Socket编程基础及深入讲解 Socket是Java网络编程的基础,了解还是有好处的,...

  • Netty

    一、网络编程基础原理 1 网络编程(Socket)概念 首先注意,Socket不是Java中独有的概念,而是一个语...

  • Linux网络编程篇之ICMP协议分析及ping程序实现

    Linux网络编程系列: Linux网络编程篇之Socket编程预备知识 Linux网络编程篇之TCP协议分析及聊...

  • Python网络编程

    Python网络编程 1、socket编程, 类:socket 1.server端 # socket第一个参数:地...

  • Java(1.8)高级特性-网络

    网络编程涉及到了最基础的Socket编程,以及基于次的网络服务。下面将介绍在Java中如何实现Socket以及一些...

  • 许世伟的Go语言基础 第五章总结

    第5章 网络编程 5.1 socket编程 以往socket编程: 建立socket:使用socket()函数。 ...

  • 网络编程1-socket基础

    一、什么是socket 1. 网络上两个程序通过一个双向的通信连接实现数据交换,连接的一端称为一个socket,英...

  • TCP通信网络编程

    1. Socket网络编程 Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链...

  • 网络编程

    python学习笔记-网络编程 socket编程: socket()函数:socket.socket([famil...

网友评论

      本文标题:Socket进阶1之网络编程基础

      本文链接:https://www.haomeiwen.com/subject/wlqtnctx.html