(1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型

时间:2021-06-10 23:37:52

1.网络编程的常识
目前主流的网络通讯软件有:微信、QQ、YY、陌陌、探探、飞信、阿里旺旺、...
在吗?

1.1 七层网络模型(熟悉)
为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将数据的传递从逻辑上划分为以下七层:
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

在发送数据之前要按照上述七层协议从上到下一层一层进行加包处理,再发送出去;
在接收数据之后要按照上述七层协议从下到上一层一层进行拆包处理,再解析出来;

1.2 常用的协议(熟悉)
http协议 - 超文本传输协议,主要用于浏览网页时使用。
ftp协议 - 文件传输协议,主要用于上传和下载文件时使用。
tcp协议 - 传输控制协议,主要用于网络通信时使用。
udp协议 - 用户数据报协议,主要用于网络通信时使用。
ip协议 - 互联网协议,是上述协议的底层协议。

协议本质上就是一种约定,用于规范通信双方的方式和规则。

1.3 IP地址(重点)
如:
192.168.1.1 - 是绝大多数路由器的登录地址,进行Mac地址的过滤。

IP地址本质上就是互联网中的唯一地址标识,通常由32位二进制组成的整数进行描述,叫做IPv4,当然也有128位二进制组成的整数,叫做IPv6。
日常生活中采用点分十进制表示法来进行IP地址的描述,也就是将每个字节的二进制转换为十进制整数,不同整数之间采用小数点隔开。
如:
0x01020304 => 1.2.3.4

查询IP地址的方式:
Windows系统:在dos窗口中使用ipconfig命令或ipconfig/all命令查看即可.
Linux系统: 在终端窗口中使用ifconfig命令或/sbin/ifconfig命令查看即可.

1.4 端口号
IP地址 - 使用IP地址可以定位到具体某台设备。
端口号 - 可以定位到具体设备中的具体进程。
网络编程需要提供:IP地址 和 端口号。

端口号本质就是由16二进制组成的整数,范围是:0 ~ 65535,其中0 ~ 1024之间的端口号通常被系统占用,因此编程从1025开始使用。

2.基于tcp协议的编程模型(重中之重)
2.1 编程模型
服务器:
(1)创建ServerSocket类型的对象,并提供端口号;
(2)等待客户端的连接请求,调用accept()方法;
(3)使用输入输出流进行通信;
(4)关闭Socket并释放有关的资源;
客户端:
(1)创建Socket类型的对象,并提供服务器的IP地址和端口号;
(2)使用输入输出流进行通信;
(3)关闭Socket并释放有关的资源;

2.2 相关类和方法的解析
(1)ServerSocket类
java.net.ServerSocket类主要用于描述服务器端的套接字(大插排)。
ServerSocket(int port) - 根据参数指定的端口号来构造对象。
Socket accept() - 用于侦听并等待客户端的连接请求。
void close()

(2)Socket类
java.net.Socket类是用于描述客户端的套接字,是两台机器间通信的端点(小插排)。
Socket(String host, int port) - 根据参数指定的主机名和端口号来构造对象。
InputStream getInputStream() - 用于获取当前套接字的输入流。
OutputStream getOutputStream() - 用于获取当前套接字的输出流。
void close()

3.tcp协议和udp协议的比较(笔试题)
3.1 tcp协议
- 传输控制协议,是一种面向连接的协议,类似于打电话。
- 建立连接 => 进行通信 => 断开连接
- 在通信的整个过程中全程保持连接
- 该协议保证了数据传输的可靠性和有序性
- 该协议是一种全双工的字节流通信方式
- 服务器压力比较大,资源消耗比较多,发送数据的效率相对比较低

3.2 udp协议
- 用户数据报协议,是一种非面向连接的协议,类似于写信。
- 在通信的整个过程中不需要保持连接
- 该协议不保证数据传输的可靠性和有序性
- 该协议是一种全双工的数据报通信方式
- 服务器压力比较小,资源消耗比较少,发送数据的效率相对比较高

(1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型的更多相关文章

  1. (1)线程的同步机制 (2)网络编程的常识 (3)基于tcp协议的编程模型

    1.线程的同步机制(重点)1.1 基本概念 当多个线程同时访问同一种共享资源时可能会造成数据的覆盖和不一致等问题,此时就需要对线程之间进行协调和通信,该方式就叫线程的同步机制. 如: 2003年左右 ...

  2. python语法基础-网络编程-TCP协议和UDP协议

    ###############    网络编程    ############## """ 网络编程 学习了Python基础之后,包括函数,面向对象等,你就可以开发了,你 ...

  3. (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制

    1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...

  4. SHELL脚本编程的常识和VI常用技巧

    来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...

  5. 关于网络协议和socket编程基本概念

    TCP协议可以说已经是IT人耳熟能详的协议,最近在学习socket网络编程时后重新温习一下这个协议,针对一些问题做了一些总结,很多理解可能还不是很准确. 1. 协议是什么?所谓的各种网络协议无非是一种 ...

  6. 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现

    设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能.伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性.可用 ...

  7. 开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等

    开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等 C++开发网络通信程序时用asio是个不错的选择 ...

  8. 基于.NET环境,C#语言 实现 TCP NAT

    基于.NET平台和C#语言实现TCP NAT穿越        1.<C# WinForm 跨线程访问控件(实用简洁写法)>       2.<基于.NET环境,C#语言 实现 TC ...

  9. 网络基础---OSI 模型与TCP&sol;IP

    一.网络的演进: 1.简单的联接:1960's ------------ 1970's    Host Network 六十至七十年代,网络的概念主要是主机架构的低速串行联接,提供应用程序执行.远程打 ...

随机推荐

  1. mysql数据库乱码解决方法之一

    在前端页面向数据库中插入带中文字符的数据,到数据库时中文都变成了"?",其中jsp页面已经是设为utf-8编码的,建数据库时选择的编码也是utf-8; 1.解决的办法是在连接数据库 ...

  2. Linux Shell 01 脚本与变量

    一 脚本的创建和执行 1. 创建文件*.sh,文件后缀为sh 2. 编辑脚本 首行必须为:#!/bin/bash   #指定解释脚本的shell 3. 赋权 chmod u+x a.sh 4. 执行 ...

  3. struts2视频学习笔记 03-06(Struts 2配置文件无提示问题,Action配置中的各项默认值,各种转发类型)

    课时3 解决Struts 2配置文件无提示问题(eclipse):window→preference→XML→XML Catlog

  4. jquery的上传控件uploadly&comma;每行都有一个这样的控件对id选择器的使用

    1.先看看预览图 这个是我的页面,其中如果我没点击添加一行的时候,会把本来有的数据进行循环出来,这个时候每个记录都必须有个上传图片的按钮,但是jquery的uploadly这个控件只是锁定id的,至少 ...

  5. 发送一个简单的http get 请求并且响应

    问题 如何发送一个简单的HTTP GET请求并且取回相应的HTTP响应. 设计 创建一个WebClient类的实例,然后使用它的DownloadData()方法. 方案 string uri = &q ...

  6. DB&lowbar;WRITER&lowbar;PROCESSES与LOG&lowbar;ARCHIVE&lowbar;MAX&lowbar;PROCESSES

    DB_WRITER_PROCESSES Property  Description Parameter type  Integer Default value  1 or CPU_COUNT / 8, ...

  7. 自定义绘制View

    Paint(画笔)   Canvas(画布)         The Canvas class holds the "draw" calls.          To draw s ...

  8. &lbrack;置顶&rsqb; android之存储篇&lowbar;SQLite数据库&lowbar;让你彻底学会SQLite的使用

    SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中 ...

  9. Solr6&period;1&period;0Windows安装步骤

    一. 环境 solr 6.1.0  下载地址 http://archive.apache.org/dist/lucene/solr/6.1.0/ jdk 1.8 tomcat8 二. 安装solr到t ...

  10. 【SQL】 MySql与SqlServer差异比较&lpar;MySql踩坑全集&rpar;

    本文主要记录将数据库从SqlServer移植到MySql的过程中,发现的各种坑爹问题.以SqlServer为主,记录MySql的差异性. 一.IF语句 首先MySql中的的IF语法不同. IF Con ...