'과제' 카테고리의 다른 글
20141019-쏘우웨이브 입사지원서 (0) | 2014.10.19 |
---|---|
20140407 - 문자열 대치 함수 (0) | 2014.04.08 |
20140407 - 달팽이 순서도 (0) | 2014.04.08 |
20141019-쏘우웨이브 입사지원서 (0) | 2014.10.19 |
---|---|
20140407 - 문자열 대치 함수 (0) | 2014.04.08 |
20140407 - 달팽이 순서도 (0) | 2014.04.08 |
------- TCP/IP 4계층과 OSI 7계층
- TCP/IP 4계층은 인터넷 모델이라고도 한다.
레벨 |
계층 |
기능 |
4계층 Application |
응용 계층 프로토콜 : HTTP, FTP, Telnet, DNS, SMTP |
OSI 7계층의 5, 6, 7계층에 해당한다. TCP/IP 기반의 응용프로그램을 구분할 때 사용한다. |
3계층 Transport |
전송 계층 프로토콜 : TCP, UDP |
OSI 7계층의 4계층에 해당한다. 통신 노드 간의 연결을 제어하고, 자료의 송수신을 담당한다. |
2계층 Internet |
인터넷 계층 프로토콜 : IP, ARP, RARP, ICMP, OSPF |
OSI 7계층의 3계층에 해당한다. 통신 노드 간의 IP 패킷을 전송하는 기능 및 라우팅 기능을 담당한다. |
1계층 Network Interface |
네트워크 인터페이스 계층 프로토콜 : Ehternet, Token Ring, PPP |
OSI 7계층의 1, 2 계층에 해당한다. CSMA/CD, MAC, LAN, X.25, 패킷망, 위성 통신, 다이얼 업 모뎀 등 전송에 사용된다. |
Ethernet과 IP, TCP, UDP Header (0) | 2014.10.22 |
---|---|
20140624 - (0) | 2014.06.24 |
20140623 (0) | 2014.06.23 |
20140620 - 시그널의 종류, 시그널 처리하기, 다수의 클라이언트와의 네트워킹 (0) | 2014.06.20 |
20140619 - 프로세스, 함수 포인터 (0) | 2014.06.19 |
------- Ethernet과 IP, TCP, UDP Header
------- Ethernet Frame
Ethernet frame은 다음과 같이 몇몇 타입이 있다.
- Ethernet II
- IEEE 802.3
- IEEE 802.2 Logical Link Control (LLC) frame
- IEEE 802.2 Subnetwork Access Protocol (SNAP) frame
--- Ethernet II
DEC, Intel, and Xerox에 의해 만들어졌으며,
DIX Ethernet 이라고도 불린다
첫 번째 필드엔 목적 MAC주소,
두 번재 필드엔 보낸 MAC주소,
세 번째 필드엔 Ether type이라고 Ethernet 프로토콜 타입,
네 번째 필드엔 정보,
다섯 번째 필드엔 CRC(cyclic redundancy check) 또는 FCS(Frame Check Sequence)라고
오류 검출에 쓰인다.
(출처 : http://en.wikipedia.org/wiki/Ethernet_frame)
--- IEEE 802.3
Novell 사에서 IPX protocol용으로 만들어졌다.
Ethernet II와 흡사한 구조로 세 번재 필드인 EtherType 대신 Length 이다.
--- IEEE 802.2 Logical Link Control (LLC) frame
OSI 계층 구조에서만 사용하는 Frame으로 거의 사용하지 않는다.
토큰링이 이 구조를 사용한다.
--- IEEE 802.2 Subnetwork Access Protocol (SNAP) frame
OSI 계층 구조에서 사용한다. TCP/IP가 주류므로 OSI는 잘 사용하지 않는다.
AppleTalk이 이 구조를 사용한다.
--- IEEE 802.1Q tag
VLAN (virtual local area network) 서비스에 대한 규약으로 Ethernet frame 들에 포함하고 있는데,
데이타 링크 계층(TCP/IP) or 네트워킹 계층(OSI)인 라우터나 스위치 등에서 운영되는 것으로,
브로드캐스트 필터링, 보안, 주소 축약, 트래픽 흐름 관리, QoS 등에 사용된다고 한다.
VLAN은 Ethernet frame에 Source Address 와 EtherType 또는 Length fields 사이에 위치하고 있거나,
EtherType 또는 Length fields 에 위치하고 있다.
처음 2 byte (2 octets)에는 Tag Protocol Identifier (TPID) 값이 0x8100으로 되어 있다.
------- Ethernet Frame 구조체
linux 환경
/usr/include/linux/if_ether.h
/usr/include/net/ethernet.h
위치에서 확인할 수 있다
|
|
--- 데이터 타입은
/usr/include/i386-linux-gnu/sys/types.h 에 있다.
--- ETH_ALEN 값은
/usr/include/linux/if_ether.h 에 있다.
--- type의 종류는
/usr/include/net/ethernet.h 에 있다.
더 많은 type은 /usr/include/linux/if_ether.h를 참고...
------- IP Header 구조체
http://en.wikipedia.org/wiki/IPv4 참고
/usr/include/netinet/in.h 에 프로토콜에 타입
/usr/include/netinet/ip.h 에 IP구조체가 정의 되어 있다
struct iphdr
{
#if __BYTE_ORDER == __LITTLE_ENDIAN
unsigned int ihl:4; //헤더 길이
unsigned int version:4; //IP version 4
#elif __BYTE_ORDER == __BIG_ENDIAN
unsigned int version:4; //IP version 4
unsigned int ihl:4; //헤더 길이
#else
# error "Please fix <bits/endian.h>"
#endif
u_int8_t tos;
u_int16_t tot_len;
u_int16_t id;
u_int16_t frag_off;
u_int8_t ttl;
u_int8_t protocol;
u_int16_t check;
u_int32_t saddr;
u_int32_t daddr;
/* The options start here. */
};
------- TCP Header 구조체
/usr/include/netinet/tcp.h
/usr/include/linux/tcp.h
에 위치해 있다.
struct tcphdr
{
u_int16_t source; //source port
u_int16_t dest; //destination port
u_int32_t seq; //sequence number
u_int32_t ack_seq; //acknowledgement number
#if __BYTE_ORDER == __LITTLE_ENDIAN
u_int16_t res1:4; //(unused)
u_int16_t doff::4; //data offset
u_int16_t fin:1;
u_int16_t syn:1;
u_int16_t rst:1;
u_int16_t psh:1;
u_int16_t ack:1;
u_int16_t urg:1;
u_int16_t res2:2;
#elif __BYTE_ORDER == __BIG_ENDIAN
u_int16_t doff::4; //data offset
u_int16_t res1:4; //(unused)
u_int16_t res2:2; //(unused)
u_int16_t urg:1;
u_int16_t ack:1;
u_int16_t psh:1;
u_int16_t rst:1;
u_int16_t syn:1;
u_int16_t fin:1;
#else
#error "Adust your <bits/endian.h> defines"
#endif
u_int16_t window; //window
u_int16_t check; //checksum
u_int16_t urg_ptr; //urgent pointer
};
TCP/IP 4계층과 OSI 7계층 (0) | 2014.10.22 |
---|---|
20140624 - (0) | 2014.06.24 |
20140623 (0) | 2014.06.23 |
20140620 - 시그널의 종류, 시그널 처리하기, 다수의 클라이언트와의 네트워킹 (0) | 2014.06.20 |
20140619 - 프로세스, 함수 포인터 (0) | 2014.06.19 |