1、socket通常也称作“套接字”,用于描述IP地址和端口。在internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务。

2、网络基础知识

1、IP地址:IP网络中每台主机具有唯一的ip地址,ip地址是一个逻辑地址,因特网上的ip地址是唯一的。IPV4由4个字节组成,经常以点分十进制表示

  2、七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。每层都规定了完成的功能以及相应的协议

物理层:提供二进制传输,确定在通信道路上如何传输比特流

数据链路层:提供介质访问,加强物理层的传输功能,建立一条无差错的传输路线

网络层:提供IP寻址和路由,因为在网络上数据可以有多条道路到达目的地,网络层负责找出最佳的传输线路

传输层:为源主机到目的主机提供可靠的数据传输服务,隔离网络的上下层协议,使得网络层与下层协议无关

会话层:在两个相互通信的应用进程之间建立,组织和协调其相互之间的通信

表示层:处理被传送数据的表示问题

应用层:为用户的网络应用程序提供网络通信的服务

3、协议:

应用层协议:文件传输协议(ftp), 超文本传输协议(http)

  传输层协议:

1、tcp:面向连接的可靠传输协议,利用tcp进行网络通信时,首先要通过三次握手,以确立双方的连接,一旦连接建立好,就可以进行通信了,tcp提供了数据确认和数据重传机制,保证了发送的数据一定会到达通信的对方

2、udp:udp是无连接的,不可靠的传输协议,采用udp进行通信时,不需要建立连接,可以直接向一个ipd地址发送数据,但是对方是否收到就无法确认了。(所以会发生丢包)

4、流式套接字:提供面向连接,可靠的数据传输服务,数据无差错,无重复的发送,且按照发送顺序接收,基于tcp协议实现的

数据报式套接字:提供无连接服务,数据包以独立形式发送,不提供无错保证,数据可能丢失或者重复,是基于udp协议实现的。

5、tcp/ip是什么?

tcp/ip是个协议组,可分为三个层次:网络层,传输层和应用层

在网络层有ip协议

在传输层有tcp协议和udp协议

在应用层有ftp,http

6、socket是什么?

socket是应用层与tcp/ip协议组通信的中间软件抽象层,一组接口,把复杂的tcp/ip协议隐藏在socket接口后面

所以http就是tcp/ip应用层的协议,socket是他们的软件抽象层

7、短连接: 连接->传输数据—>关闭连接

http是无状态的,浏览器和服务器每进行一次http操作,就联立一次连接,但任务结束就中断连接

也可以这样说:短连接是指socket连接后发送后接收完数据后马上断开连接

8、长连接:

连接->传输数据->保持连接->传输数据->.....->关闭连接

长连接是指建立socket连接后不管是否使用度保持连接,但安全性较差

9、tcp与udp编程

基于tcp(面向连接)的socket编程的服务端的流程:

1、创建套接字(socket)

2、将套接字绑定到一个本地地址和端口上(bind)

3、将套接字设置为监听模式,准备接收客户端请求(listen)

4、等待客户端请求到来,当请求到来时,接受连接请求,返回一个新的对应与此次连接的套接字(accept)

5、用返回的套接字和客户端进行通信(send/recv)

6、返回,等待另外的客户请求

7、关闭套接字

基于tcp的socket编程的客户端的程序流程如下:

1、创建套接字(socket)

2、向服务器发起连接请求(connect)

3、和服务器机进行通信(send/recv)

4、关闭套接字

在服务端,当调用accept函数时,程序就好等待,等待客户端调用connect函数发出连接请求,然后服务器接受请求,之后连接建立,服务器和客户端就可以使用send和recv进行通信了

基于udp(面向无连接的)socket编程

服务端也叫接收端,对于基于udp的编程来说,先启动的成为服务端,发送数据的成为客户端

socket网络通信的更多相关文章

  1. Socket 网络通信

    Socket 网络通信 1.OSI (Open System Interconnect Reference Model)(开放系统互联参考模型) 从下低到高 :物理层.数据链路层.网络层.传输层.会话 ...

  2. Socket网络通信之NIO

    Socket网络通信之NIO NIO:new io ,java1.4开始推出的可非阻塞IO. java.nio 包,可解决BIO阻塞的不足 但比BIO学习.使用复杂. 可以以阻塞.非阻塞两种方式工作. ...

  3. Socket网络通信之BIO

    Socket网络通信之BIO 如果要让两台计算机实现通信,需要的条件:ip,port,协议. 目前我们用的最多的就是TCP/IP协议和UDP协议.TCP三次握手,所以比较慢,且安全:UDP速度快,但是 ...

  4. java实现最基础的socket网络通信

    一.网络通信基础 网络中存在很多的通信实体,每一个通信实体都有一个标识符就是IP地址. 而现实中每一个网络实体可以和多个通信程序同时进行网络通信,这就需要使用端口号进行区分. 二.java中的基本网络 ...

  5. Socket网络通信编程(二)

    1.Netty初步 2.HelloWorld 3.Netty核心技术之(TCP拆包和粘包问题) 4.Netty核心技术之(编解码技术) 5.Netty的UDP实现 6.Netty的WebSocket实 ...

  6. TCP/UDP,SOCKET网络通信,C++/Java实现

    趁这两天没事干,就把网络通信这一块搞一搞,C/S方面的了解一下,很重要! TCP Server/Client

  7. UDP SOCKET网络通信 C#

    接收端 using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Thread ...

  8. [Socket]BSD Socket网络通信

    http://blog.csdn.net/dongfengsun/article/details/4802925 文章有一些错误 #define KENTER @"/r/n" 应该 ...

  9. Socket网络通信之数据传递

    Socket通信的步骤: 1.创建ServerSocket和Socket 2.打开连接到Socket的输入/输出流 3.按照协议对Socket进行读/写操作 4.关闭输入输出流.关闭Socket 服务 ...

随机推荐

  1. Android UI 绘制过程浅析(五)自定义View

    前言 这已经是Android UI 绘制过程浅析系列文章的第五篇了,不出意外的话也是最后一篇.再次声明一下,这一系列文章,是我在拜读了csdn大牛郭霖的博客文章<带你一步步深入了解View> ...

  2. [ json editor] 如何在网页中使用Json editor 插件

    [目的] 在自己的网页上交由用户进行json的可视化编辑 [难点]1.json中含有递归嵌套的数组和对象 2.json中的基本值类型有数字.字符串和布尔型 [方法]使用daviddurman的Flex ...

  3. Django1.7+JQuery+Ajax集成小例子

    Ajax的出现让Web展现了更新的活力,基本所有的语言,都动态支持Ajax与起服务端进行通信,并在页面实现无刷新动态交互. 下面是散仙使用Django+Jquery+Ajax的方式来模拟实现了一个验证 ...

  4. AES加密算法实现

    AES算法是一种对称加密算法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准. 下文实例中,密钥采用了直接写死的方式,实际使用中可以配合RSA加密算法加密密钥,从而达到更好的安全效 ...

  5. Git--分布式版本控制系统

    使用Git实现多人协作开发 1.简述 每创建一个大的web项目都会有团队协作完成, 然这个过程有可能就像毕业生写论文的过程, 这个过程会有很多...修改的版本, 我们的项目也是会经过无休止的改需求, ...

  6. CNC系统实时性分析

    该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. 答:数控系统中控制装置与现场设备通信的实时性要求,数控系统要快速而有效的对复杂而庞大的操作任务进行处理. ...

  7. CHARINDEX

    实现查询条件多个值的或的关系 Select Id,Name from CustTable where CharIndex( CustTable.Name, 'ACDE,BEX,CCC')>0 C ...

  8. Android IOS WebRTC 音视频开发总结(八十二)-- VP8对VP9,质量还是码率?

    本文主要介绍VP9(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blacke ...

  9. Mybatis 新增修改一条SQL

    如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE:如果不会导致唯一值 ...

  10. opencv安装

    1下载OpenCV-2.3.1-win-superpack.exe安装到指定路径下(随意)二.设置全局变量 右击“我的电脑”选“属性”,点“高级系统属性”,点“环境变量”,在用户变量中新建两个用户变量 ...