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

在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必要进一步的了解,这就要我们了解网络通信层了,提到网络通信层不得不说起ISO-OSI的七层协议经典架构,如图所示: 上图的左边部分就是osi架构模型了, ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标…
在TCP/IP协议中,最重要的协议是[TCP.UDP.IP]协议 1.TCP/IP协议特点 1)Internet上不同系统之间互联的一组协议 2)为分散和不同类型的硬件提供通用的编程接口. 3)TCP/IP 协议使Internet尽可能成为一个分散.无序的网络. 2.TCP协议 1)定义 TCP是基于(面向)连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接 2)TCP协议建立连接 TCP协议建立连接需要三次会话(握手) A->B B->A A->B 3)特点 面向连接,数…
这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请 求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做地址解析协议,是用IP地址换MAC地址的一种协议,而RARP则叫做逆地址解析协议,在tcp/ip协议的后面章节会介绍它们(在局域网里面用ARP协议可以很容易的搞瘫痪网络哦) 数据链路层的协议还是很多的,有我们最常用的以太…
这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 网际层包括:IP.ICMP.IGMP 以及处在网际层实际工作在链路层的 ARP 和 RARP等等协议. 1.IP协议 互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址).IP地址长32 bit.IP协议是TCP/IP协议的核心,所有的TCP,UDP,ICMP,IGMP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议…
这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 传输层中有TCP协议与UDP协议. 1.UDP介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议. 1.1.UDP协议头 1.2 UDP端口号 由于很多软件需要用到UDP协议,所以UDP协议必须通过某个标志用以区分不同的程序所需要的数据包.端口号的功能就在于此,例如某一个UDP程序A在系统中注册了3000端口,那么,以后从外面传…
简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成. TCP/IP协议由四层组成,分别为:网络访问层.互联网层.传输层.应用层.那如何理解这四层,他们的作用又是什么呢? 所谓四层结构,是将网络中传输的数据包逻辑性的分为四个层次,从前到后的结构如下所示: 重点:设备(包括你的手…
TCP/IP协议族是一个分层,多协议通信体系. 1 TCP/IP协议族体系结构 TCP/IP协议族自底而上分为四层: 数据链路层, 网络层, 传输层和应用层. 1.1 数据链路层 实现网卡接口的网络驱动程序,以处理数据在物理媒介(如,以太网, 令牌环)上的传输. 经常使用协议: ARP协议和RARP协议 1.2 网络层 实现数据包的选路和转发.採用逐跳通信方式. 经常使用协议:IP协议和ICMP协议(并不是严格意义上的网络层协议,它是基于IP协议的) 1.3 传输层 为两台主机上的应用程序提供端…
以前我们讲过进程间通信,通过进程间通信可以实现同一台计算机上不同的进程之间通信. 通过网络编程可以实现在网络中的各个计算机之间的通信. 进程能够使用套接字实现和其他进程或者其他计算机通信. 同样的套接字既可以实现进程间通信,也可以实现计算机之间通信. 套接字是通信端点的抽象. 与文件描述符一样,套接字需要使用套接字描述符. 套接字在Linux上也是通过文件实现的,所以传统的write和read同样适用于套接字. 当服务器和应用程序需要和其他进程通信的时候就会使用套接字. 一对对接的套接字接口构成…
最近完成了几项比较简单的项目, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧?  一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志, logginglevel: debug, jdk版本为1.8) 造成这种现象的原因可能是, Mybatis在执行接口方法时, 实例化了多个Preparedstatement, 启用了不同的NIO线程, 但是其中, 咦?! 没错, NIO中出了一段IO!!! (天哪!), 在查询网络资料后, 发现…
TCP协议利用网络层IP协议提供不可靠的通信服务,解决分组的重传和排序问题,为应用程序提供可靠的.端到端的.面向连接的基于字节流的服务. 对等TCP传输实体间的通信具有如下特征: 全双工 只支持两个端口之间的通信,即只支持单一广播 基于字节流…