TCP/IP
원래는 인터넷 프로토콜 스위트로 인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데 쓰이는 프로토콜의 모음인데, 이러한 프로토콜 슈트 중 TCP/IP가 가장 많이 쓰이기 때문에 이에 대해서 적어보려고 한다.
이러한 계층을 토대로 데이터가 전송하게 되는데 각 Layer를 거치면서 각 Layer의 헤더가 붙게 된다.
- 어플리케이션 : DNS, HTTP, FTP, SMTP, SSH, 토렌트 등등
- 전송 계층 : TCP, UDP 등등
- 인터넷 계층 : IP(IPv4, IPv6)
- 네트워크 계층 : 이더넷, Wi-Fi 등등
Packet과 Frame
Packet의 경우 데이터와 각 Layer를 거쳐서 붙게된 헤더들을 총 합친 것이고, Frame은 이러한 Packet을 운반하는 운반차라고 생각하면 된다. Frame의 경우 구간마다 통신 방식이 달라질 수 있다.
ex) 카톡을 보내면?
Wi-Fi ---> Ethernet --> 광랜(Ethernet) ----> Frame-Relay ---> ATM ---> FDDI ---> Ethernet
(# 근거리 통신을 하다가 장거리 통신을 할 수도 있고, 근거리 통신내에서도 바뀔 수 있다.)
Frame의 경우 전송 방식에 따른 종류
- LAN(근거리 통신) : Wi-Fi, 이더넷, FDDI 등
- WAN(원거리 통신) : ATM, PPP 등등
그런데 이렇게 전송 방식에 따라 Frame이 전송할 수 있는 최대치가 있는데 (# 이더넷의 경우 1500바이트)이러한 용량을 맞추기 위해 Packet이 Layer에서 분할, 단편화를 거치게 된다.
(# TCP일 때만 분할하고 그 외 단편화를 거친다.)
분할(TCP)
만약 전송계층이 TCP통신이라면 전송계층에서 데이터를 자른다. 각 데이터는 1460byte로 잘리는데 이유는 TCP헤더와 다음계층에서 붙을 IP헤더의 byte를 고려하기 때문이다. (# 각 헤더는 20byte)
단편화(IP)
분할되지 않았다면 단편화 과정을 거치게 된다. 이때 데이터를 1480byte로 자르게 되고, 각 데이터에 IP헤더를 붙인다.
(# 전송계층의 헤더는 단편화 된 데이터들 중 한 곳에만 존재한다.)
MAC Address
명령 프롬프트 창에 ipconfig /all을 치면
위와 같은 모습이 나온다 더 다양하게 있지만 와이파이를 사용하여 무선 LAN을 보고 있다.
물리적 주소 : MAC Address
IPv4 주소 : IP 주소
MAC의 경우 16진수로 된 12자리로 표현된다 00-00-00-00-00-00
Port Numbers
컴퓨터 내부의 서비스를 식별하기 위해서 사용 ()
Well-known Port (0-1023) : 미리 용도를 지정한 포트 (서버용 포트)
- ex) http(80), FTP(21), SSH(22), Telnet(23), SMTP(25), https(443)
User / Registered Port (1024-49151) : 클라이언트 포트 사설 앱을 개발하는 경우, 용도를 등록하여 사용 가능
- ex) MySQL : 3306, Battlenet : 6112
Dynamic Port (49152-65535) : 제한 없이 사용 가능한 포트 (= Private Port)