눈팅하는 게임개발자 블로그
TCP/IP 환경 본문
TCP/IP 환경 -공인 IP / 사설 IP
공인 IP (Public IP)
전세계 유일한 고유 IP 주소, 외부 망에서 직접 연결 가능한 주소.
IPv4(4bytes)를 사용했으나 IPv4의 주소가 부족하게 되어
IPv6(16bytes)를 사용한다.
사설 IP/비공인 IP(private IP) - 공유기를 사용하여 IP를 공유함
공인 IP 부족을 해결하는 방법.
하나의 공인 IP를 다수의 비공인(사설) IP들이 공유.
공유기 원리 NAT(Network Address Translation)
개인 PC에서 목적지로 패킷 전송 -> 공유기에서 중계, 전송
-> 목적지는 공유기에서 해당 패킷이 온 것으로 생각한다.(Remote IP가 공유기의 IP임)
TCP/IP 환경에서 라우팅 원리
송신 측에서 수신 측으로 서버 패킷을 보내기 위해 라우터 1(송신 측의 컴퓨터에 연결된 라우터)의
Mac address(L2, Physical Address)가 필요하다. 이를 알아내기 위해 ARP를 요청한다.
ARP Request
송신 측의 컴퓨터가 라우터의 Mac address를 요청하고 라우터는 자신의 Mac address를 반환.
데이터 출발지(송신 측의 IP)와 목적지(수신 측의IP)를 항상 포함한 상태로
다음 라우터의 Mac address와 출발지 라우터(또는 컴퓨터)의 Mac address만을 변경하여 데이터를 전송.
TCP/IP 프로토콜 동작 순서.
ARP Protocol
Broadcast 형식으로 ARP Request.
연결된 라우터에서 1:1 형식으로 ARP Reply.
DNS Protocol
DNS Query로 해당 domain name의 IP 주소를 요청.
DNS Reply로 해당 IP 주소를 리턴.
Web 서버와 통신하려면 연결이 필요하고. Domain name을 IP주소로 변환해야 한다.
Domain name을 IP 주소로 변환하기 위해 DNS 서버와 통신이 필요한데.
DNS 서버와 통신을 하기 위해서 라우터의 도움이 필요하다.
라우터의 도움을 받기 위해 라우터의 Mac address가 필요하다.
따라서 송신 측 컴퓨터에서 ARP Request가 가장 먼저 동작해야 한다.
Network Data 구조
Ethernet Frame 구조
IP 프로토콜
버전 - 데이터 그램을 생성한 IP의 현재 버전(IPv4 또는 IPv6)
헤더 길이 - IP 헤더의 길이
서비스 유형 - 데이터그램의 우선순위를 나타냄.
전체 길이 - IP 헤더를 포함한 전체 길이
식별자 - IP가 단편화 될 때 단편들을 구분하기 위한 번호
플래그 - 단편화 여부, 단편의 조각이 첫 번째 조각인지, 중간 혹은 마지막 조각인지를 구분함.
단편 옵셋 - 조각난 단편들의 원래 IP 데이터그램에서의 위치 정보를 나타내는 포인터
수명 - 데이터그램이 폐기되기 전 인터넷에서 얼마나 존속할 수 있는지를 지시하는 값.
프로토콜 - 데이터그램이 싣고 가는 데이터의 종류
체크 섬 - 전송 도중 IP헤더의 손상 여부를 확인.
근원지 주소 - 보내는 쪽의 IP 주소
목적지 주소 - IP 데이터그램의 최종 목적지 주소
옵션 - 경로 설정, 타이밍, 관리, 정렬 등의 부수적인 기능 처리
TCP 프로토콜
근원지 포트 번호 - 근원지 컴퓨터에서 사용하는 것으로 어플리케이션이 사용하는 포트 번호
목적지 포트 번호 - 목적지 컴퓨터에서 사용하는 것으로 어플리케이션이 사용하는 포트 번호.
포트 번호에 따라 상위 응용 프로토콜을 구별한다. HTPP : 80, SMTP : 25, Telnet : 23, FTP 데이터 접속 : 20, SSH : 22
순서 번호 - TCP 데이터 전송 순서번호를 나타냄.
확인 번호 제어 6비트 중 ACK 비트가 설정되어 있을 때, 다음에 받아야 하는 순서 번호를 나타냄
헤더 길이 - 4바이트 기준으로 표기, 5(hex)일 경우 20바이트.
예약 - 아직 사용되지 않는 필드.
제어 6비트
URG - 세팅되면 긴급포인터의 내용 실행
ACK - 세팅되면 확인번호 필드가 유효함.
PSH - 세잍되면 송신자에게 높은 처리율을 요구함.
RST - 세팅되면 TCP 연결을 다시 연결함.
SYN - 세팅되면 연결 요청, 연결 설정, 확인 응답에서 순서번호 동기화에 사용
FIN - 세팅되면 TCP 연결 종료
윈도우 크기 - 슬라이딩 윈도우 크기를 정함
체크 섬 - TCP 헤더 내부의 오류 검사
긴급 포인터 - 긴급 포인터의 끝과 일반 데이터의 시작을 나타냄.
'공부한거 > 네트워크 프로그래밍' 카테고리의 다른 글
Socket Programming (0) | 2020.09.25 |
---|---|
네트워크 이론 (0) | 2020.09.25 |