概念

什么是网络编程?
传输层以下,一般在操作系统内核中执行。通常所说的网络编程,基本等价于socket编程,以及socket之上的编程?

网络层也有对应的api,应该。

应用编程接口(TCP/IP详解 1.15节)

使用TCP/IP协议的应用程序通常采用两种应用编程接口(API):socket和TLI(运输层接口: Transport Layer Interface)。前者有时称作“Berkeley socket”,表明它是从伯克利版发展而来的。后者起初是由 AT & T开发的,有时称作 X T I( X / O p e n运输层接口),

socket编程能干嘛?有什么是socket编程搞不定的,必须要改内核的?

能干嘛

  • 代理,比如shadowsocks
  • vpn是吗?貌似vpn工作在底层,不算socket编程。vpn是通过编写一套网卡驱动并注册到操作系统实现的虚拟网卡。
  • 猎豹wifi也是虚拟出一张网卡

Overview

  • 目录名参考 java.net包, javax.net包
  • 目的:

怎样算得上熟悉 TCP/IP 协议编程?

能进行网络编程

一般书上只讲解了OSI模型中的七层模型,实验也只是socket通信。怎样算得上熟悉 TCP/IP 协议编程?

  1. 如果你说你会select,epoll,iocp模型,那会让对方觉得更靠谱
  2. 如果你说出你做过im,下载之类那会让对方来兴趣.
  3. 如果你说设计了通讯协议,会让对方觉得更贴切
  4. 如果你说做过,熟悉, ftp http snmp smtp 这些简单的老古董协议,会加分,但不大.
  5. 如果你说熟悉bt,emule,udt等协议,那会对你很有好感.
  6. 如果你说你破解过某大牌 qq,360内某通讯协议,那会对你加分很大

参考知乎:https://www.zhihu.com/question/20795067/answer/16259037

问题集

  • 现在可以写代码看到传输层的信息。 已经看到了http header, smtp header, 怎样打印tcp header?
  • 可以看到更底层的报文吗? 怎样打印更底层的header?通过java、python可以看到更底层的header吗?
  • 公司的网络截断是怎样做的?猜测就是wireshark的封装,监听通过网卡的每个连接。

待学习资料

  • 计算机网络自顶向下方法,其中有python的学习代码

未分类信息

CRLF

CRLF命令
它表示键盘上的”Enter”键(可以用来模拟回车键)。
CRLF注入
就是说黑客能够将CRLF命令注入到系统中。它不是系统或服务器软件的漏洞,而是网站应用开发时,有些开发者没有意识到此类攻击存在的可能而造成的。
针对这个漏洞黑客能够做什么?
就算黑客发现网站存在CRLF注入,他们仍然受到应用结构和这个缺陷的严重程度的限制。
对有些站点它将非常严重,而有些站点它只是很小的bug。
HTTP Header CRLF Injection
许多网络协议,包括HTTP也使用CRLF来表示每一行的结束。这就意味着用户可以通过CRLF注入自定义HTTP header,导致用户可以不经过应用层直接与Server对话。
HTTP header的定义就是基于这样的”Key: Value”的结构,用CRLF命令表示一行的结尾。
“Location:”头用来表示重定向的URL地址,”Set-Cookie:”头用来设置cookies。
如果用户的输入经过验证,其中存在CRLF的字符就可以被用来达到欺骗的目的。

dfd