注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料.此书出版较早,分析的版本为2.4.16,故出现的一些概念可能跟最新版本内核不同. 此书已经开源,阅读地址 http://www.kerneltravel.net 一.套接字socket…
一.套接字Socket IP地址标志Internet上的计算机,端口号标志正在计算机上运行的进程(程序). 端口号被规定为一个16位的0--65535之间的整数,其中,0--1023被预先定义的服务通信占用. 当两个程序需要通信时,可以通过Socket类建立套接字对象并连接在一起.(端口号与IP地址的组合得出的一个网络套接字) 二.示例 (1)客户端服务器端一对一:聊天 package mychat; import java.io.BufferedReader; import java.io.B…
1.套接字地址结构: struct sockaddr { sa_family_t sa_family; char sa_data[14]; }; 其中,成员sa_family表示套接字的协议族类型,对应于TCP/IP协议该值为AF_INET;成员sa_data存储具体的协议地址. sa_data之所以被定义成14个字节,因为有的协议族使用较长的地址格式.一般在编程中并不对该结构体进行操作, 而是使用另一个与它等价的数据结构:sockaddr_in 每种协议族都有自己的协议地址格式,TPC/IP协…
一.TCP协议(Transmission Control Protocol 传输控制协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割.数据传输以数据流的形式传送 2.(1)三次握手建链接   (2)四次挥手断开链接   (3)tcp协议的状态   (4)syn洪水攻击与半连接池 3.(1)三次握手建立链接.四次挥手断开链接(各种状态) SYN(synchronous建立联机)…
TCP协议与基于tcp协议的套接字socket 一.TCP协议(流式协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割.数据传输以数据流的形式传送 2.(1)三次握手建链接   (2)四次挥手断开链接   (3)tcp协议的状态   (4)syn洪水攻击与半连接池 3.(1)三次握手建立链接.四次挥手断开链接(各种状态) SYN(synchronous建立联机) ACK(ack…
网络编程与套接字 网络编程 网络编程是什么: ​ 网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互链接组成的 ​ 编写基于网络的应用程序的过程序称之为网络编程. 网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组包, 在接收端按规定好的协议把包进行解析,从而提取出相应的信息,达到通信的目的. 其中最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析, 其中涉及到代码,数据库,网页设计,服务器架设, c/s类与b/s类是目前主要的程序架构, c/s是Cl…
前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程.通常我们使用socket进行网络编程,这里将会简单地讲述如何使用socket进行简单的网络编程. 一.什么是socket socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行.也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信.…
1)概念 网络编程基本模型就客户端到服务器的模型,也就是我们常见的C/S模型.简单的说就是两个进程间相互通信的过程.即通信双方一方作为服务器等待客户端提出请求并给以回应,另一方作为客户端向服务器提出请求.服务器一方一般作为守护进程始终运行,监听网络端口,一旦监听到客户请求,就启动一个服务进程或线程来响应该客户端,同时继续监听端口等待其他客户端的连接. 2)两种传输协议  (1) TCP  传输控制协议 TCP是Transfer Control Protocol的简称,是一种面向连接的保证可靠传输…
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据.为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接. 生成套接字,主要有3个参数:通信的目的IP地址.使用的传输 层协议(TCP或UDP)和使用的端口号.Socket原意是“插座”.通过将这3个参数结合起来,与一个“…
在Java的Socket中,主要包含了以下可设置的TCP参数. 属性 说明 默认值 SO_TIMEOUT 对ServerSocket来说表示等待连接的最长空等待时间; 对Socket来说表示读数据最长空等待时间. 0 TCP_NODELAY 是否一有数据就马上发送. false SO_LINGER 优雅地关闭套接字,或者立刻关闭. -1 SO_SNDBUF 发送数据的缓冲区大小. 8K SO_RCVBUF 接收数据的缓冲区大小. 8K SO_KEEPALIVE 是否启用心跳机制. false S…