在TCP/IP协议中,最重要的协议是【TCP、UDP、IP】协议


1.TCP/IP协议特点

  1. 1Internet上不同系统之间互联的一组协议
  2. 2)为分散和不同类型的硬件提供通用的编程接口。
  3. 3TCP/IP 协议使Internet尽可能成为一个分散、无序的网络。

2.TCP协议

1)定义

TCP是基于(面向)连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接

2)TCP协议建立连接

TCP协议建立连接需要三次会话(握手)

  1. A->B
  2. B->A
  3. A->B

3)特点

  1. 面向连接,数据安全
  2. 因为三次握手降低了执行效率

4)基于TCP协议的Socket编程聊天程序

  1. 客户端
  2. 1Scanner对象【要发送的数据】
  3. 2,创建【Socket对象】(地址,端口号)
  4. 3,创建【输出流】socket.getOutputStream()
  5. 4,【发送数据】os.write(string.getBytes())
  6. 若需接收,则采用【服务器端】步骤
  7. 服务器端
  8. 1,创建【ServerSocket对象】(端口号)
  9. 2,创建【socketserverSocket.accept()
  10. 3,创建【输入流】socket.getInputStream()
  11. 3,【接收数据】is.read(bs)
  12. 若需回复,则采用【客户端】步骤

注意:

  1. 给服务端发送数据后是不能给客户端返回信息的,因为客户端发送完后再接收信
  2. 息会阻塞客户端,导致不能关流,那么客户端不关流,服务端就无法接收完毕,
  3. 因此不能执行接收文件后的发送消息的行为

3.IP协议

1)定义

  1. IP协议由主机到主机协议调用,而此协议负责调用本地网络协议将数据报传送以下一个网关或目的主机。
  2. 例如TCP可以调用IP协议,在调用时传送目的地址和源地址作为参数,IP形成数据报并调用本地网络(协议)接口传送数据报。

2)特点

  1. 私有IP:没有互联网,多台电脑允许IP地址相同
  2. 公有IP:联网后,在网络上会自动分配一个IP,不允许重复

3)IP地址

  1. a.【唯一】标识【网络上】的每一台计算机
  2. b.IP地址的组成
  3. 32位,由48位二进制数组成(每个0~255)比如192.168.1.200
  4. IP地址 = 网络地址 +主机地址
  5. 网络地址:标识计算机或网络设备所在的网段
  6. 主机地址:标识特定主机或网络设备
  7. c.IP地址的配置和检测
  8. 查看本机的IP地址:运行cmd,调用ipconfig
  9. 测试网络是否通畅:ping 目标IP地址
  10. (比如:ping baidu.com 或者ping 192.168.11.200)

4)给自己发消息IP地址

  1. 1,直接查看IP地址
  2. 2127.0.0.1 本机测试地址
  3. 3localhost 代表本机

4.端口号

1)定义

  1. 具有网络功能的应用软件的标识号
  2. 端口是一个软件结构,被客户程序或服务程序用来发送和接收数据,一台服务器有256*256个端口

2)0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的

3)1024-65535是并没有公共定义的端口号,用户可以自己定义这些端口的作用。

4)端口与协议有关:TCP和UDP的端口互不相干

网络编程3之TCP/IP协议的更多相关文章

  1. Android网络编程系列 一 TCP/IP协议族

    在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...

  2. Android网络编程系列 一 TCP/IP协议族之链路层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RA ...

  3. Android网络编程系列 一 TCP/IP协议族之网际层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 网际层包括:IP.ICMP.IGMP 以及处在网际层实际工作在链路层的 ARP 和 RARP等等协议. 1.IP协议 互联网 ...

  4. Android网络编程系列 一 TCP/IP协议族之传输层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 传输层中有TCP协议与UDP协议. 1.UDP介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,U ...

  5. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

  6. 网络基础篇(一)--TCP/IP协议族

    TCP/IP协议族是一个分层,多协议通信体系. 1 TCP/IP协议族体系结构 TCP/IP协议族自底而上分为四层: 数据链路层, 网络层, 传输层和应用层. 1.1 数据链路层 实现网卡接口的网络驱 ...

  7. Linux 网络编程一(TCP/IP协议)

    以前我们讲过进程间通信,通过进程间通信可以实现同一台计算机上不同的进程之间通信. 通过网络编程可以实现在网络中的各个计算机之间的通信. 进程能够使用套接字实现和其他进程或者其他计算机通信. 同样的套接 ...

  8. 从零探索Java网络编程01之 TCP/IP 与 Socket

    最近完成了几项比较简单的项目, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧?  一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志 ...

  9. 第1章 网络编程基础(4)——TCP/IP通信

    TCP协议利用网络层IP协议提供不可靠的通信服务,解决分组的重传和排序问题,为应用程序提供可靠的.端到端的.面向连接的基于字节流的服务. 对等TCP传输实体间的通信具有如下特征: 全双工 只支持两个端 ...

随机推荐

  1. sql中的for xml path() 实现字符串拼接

       通常我们需要在sql中拼接字符串   ,可以用for xml path() 来进行拼接,如下实例. 同时未去掉最后一个逗号可以用LEFT函数来实现.     ) AS UserName  FRO ...

  2. 纯JS实现图片验证码功能并兼容IE6-8

    最近要搞一个图片验证码功能,但是又不想自己写后台代码.于是自己准备搞一个纯前端的验证码功能,于是网上搜索了一下,找到一个插件gVerify.js,简单好用,实现完美.不过后面接到说要兼容IE8,想想也 ...

  3. iOS·官方文档译文框架源码注解

    导语

  4. Android事件分发机制详解

    事件分发机制详解 一.基础知识介绍 1.经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION_MOVE,MotionEvent.ACTION_UP等 2 ...

  5. 读书笔记 effective c++ Item 54 让你自己熟悉包括TR1在内的标准库

    1. C++0x的历史渊源 C++标准——也就是定义语言的文档和程序库——在1998被批准.在2003年,一个小的“修复bug”版本被发布.然而标准委员会仍然在继续他们的工作,一个“2.0版本”的C+ ...

  6. ECharts 实现人民的名义关系图谱 代码开源

    1.什么是ECharts ECharts是百度开源的纯 Javascript 图表库,目前开源可以与highcharts相匹敌的一个图表库,相信有很多国内用户使用. 官网 http://echarts ...

  7. NI Vision for LabVIEW 基础(一):NI Vision 简介

    NI Vision 控件模板 Vision控件模板位于LabVIEW控件模板的最顶层,由一下元素组成: IMAQ Image.ctl—该控件是一个类型定义,用于声明图象类型的数据.在VI的前面板中使用 ...

  8. jDialects:一个从Hibernate抽取的支持70多种数据库方言的原生SQL分页工具

    jDialects(https://git.oschina.net/drinkjava2/jdialects) 是一个收集了大多数已知数据库方言的Java小项目,通常可用来创建分页SQL和建表DDL语 ...

  9. 10个漂亮的jQuery日历插件下载【转载】

    10个漂亮的jQuery日历插件下载 2013-08-07 标签:jQuery日历插件jQuery日历jQuery插件   日期是非常重要的,随时随地.微薄或网站的日期选取器日历必须在那里.您可以使用 ...

  10. SQL检索记录

    <<第一章检索记录>>:关于表使用SELECT语句和特殊字符"*": *:SELECT * from emp; 1:分别列出每一行:SELECT empno ...