일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- TCP/IP
- 중소규모택지
- meta table
- C API
- QTcpServer
- 엑스퍼트2주년
- 수도권주택공급
- lua for windows
- file read
- file write
- lua install
- 엑스퍼트생일축하해
- file open
- lua interpreter
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- lua setup
- 찾다죽는줄
- QT TCP
- Lua
- 월세
- 국토교통부
- FILE TRANSFER
- 프리미어 영상변환
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- 프리미어 영상저장
- 등록임대주택
- 청량리역한양수자인192
- object
- C++ API
- 티몬삼겹살데이
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
#2 Ethernet, IP, TCP/UDP 헤더 소개(Packet Header: Ethernet, IP & TCP/IP) 본문
#2 Ethernet, IP, TCP/UDP 헤더 소개(Packet Header: Ethernet, IP & TCP/IP)
valuecreatort 2019. 6. 13. 17:54아래 그림은 Ethernet 헤더부터 IP 헤더, 그리고 TCP/UDP 헤더를 패킷의 응용을 어떻게 구별하는지를 그 과정을 보이고 있습니다.
1. Ethernet Header
Ethernet 헤더는 Destination MAC Address(6B), Source MAC Address(6B) 그리고 Ethernet Type(2B)로 구성이 됩니다.
그리고 위 그림과 같이 Ethernet Type의 값이 1536(0x600) 보다 크면 RFC 894에서 규정한 DIX 2.0 포맷이 되구요(아래 그림 좌측과 같이). 만약 이 보다 작은 값이면 IEEE에서 정의한 SNAP 혹은 SAP 포맷이 됩니다. 현재 유선 Ethernet 망에서 다니는 대부분의 패킷은 이 DIX 2.0 이므로 일단 이 것만 아셔도 될 듯 합니다.
여기서 이 Ethernet Type 필드는 L3 패킷의 타입을 명시하는 역할을 하는데요. Ethernet Type=0x0800이면 IPv4 패킷, 0x0806이면 ARP 패킷입니다. 그리고 마지막으로 0x8100이면 VLAN Tag(아래 그림의 우측)가 Ethernet 헤더와 L3 패킷 사이에 붙는다는 의미입니다. 이 VLAN Tag에는 VLAN ID와 QoS 정보를 담고 있는 802.1p(CoS라고도 부름)가 포함되어 있습니다. 그리고 VLAN Tag 이후에 L3 패킷 타입을 명시하기 위해 다시 Ethernet Type이 나오게 됩니다.
2. IP Header
Ethernet Type=0x0800이면 IPv4(IP version 4) 패킷이죠. 현재 전 지구상에 다니는 대부분의 패킷 타입니다. IPv4 헤더는 통상적으로 20B(바이트)이구요. 여기에 Source IP Address(4B)나 Destination IP Address(4B)가 들어 있습니다. 이 중에 Protocol ID(2B)라는 필드가 있는데요. 이 필드가 L4 패킷 타입을 명시하는 역할을 합니다. 그래서 맨 위 그림과 같이 Protocol ID=1이면 ICMP(Ping이 ICMP 패킷의 일종이죠), 2이면 Multicast에서 사용되는 IGMP(여러분들 집에 IPTV에서 채널 바꾸면 셋톱박스에서 망으로 IGMPv2를 보냅니다), 6이면 TCP, 17이면 UDP입니다.
3. TCP/UDP Header
이제 마지막으로 TCP/UDP 헤더입니다. UDP 헤더는 8B(바이트)이고 TCP 헤더는 20B이죠. 이 두 헤더 모두 첫 2B가 Source Port Number(SP)이고, 다음 2B가 Destination Port Number(DP)입니다. 여기서 SP에는 패킷 송신 단말에서 고른 random한 값이 들어가게 되구요(이를 Ephemeral Port라고 부릅니다.), DP에 바로 "응용 트래픽"의 타입이 들어가게 됩니다. HTTP는 TCP를 사용하는 응용이므로 TCP 헤더의 DP=80이고, VoIP에서 사용되는 SIP는 UDP 헤더의 DP=5060이구요.
이와 같은 방법으로 Ethernet 헤더의 "Ethernet Type", IP 헤더의 "Protocol ID", TCP/UDP 헤더의 "Destination Port Number"를 통해 최종 응용(Application)이 무엇인지 확인이 가능합니다.
'1. 프로그래밍 > 4) Network' 카테고리의 다른 글
Chapter 1 서버-클라이언트 소스코드 분석 (0) | 2019.10.28 |
---|---|
윤성우의 열혈 TCP/IP 프로그래밍 pdf 사이트 (0) | 2019.09.19 |
#4 리눅스 네트워크 프로그래밍 (0) | 2019.06.18 |
#3 TCP/IP 송수신 과정 (0) | 2019.06.17 |
#1 Ethernet, TCP/IP 프로토콜 총 정리 (0) | 2019.06.13 |