▶ 인터넷 통신
클라이언트 - 인터넷 - 서버
▶ IP(인터넷 프로토콜)
IP 주소 부여
클라이언트, 서버 모두 IP가 있어야 함
지정한 IP 주소에 데이터 전달(패킷 이라는 통신 단위로 데이터 전달)
(패킷(Packet)은 패키지(Package)와 버킷(Bucket)의 합성어)
패킷에는 출발지 IP, 목적지 IP, 메세지 등이 포함되며,
IP 패킷을 던지면 인터넷 망 안에서 노드끼리 목적지 IP로 빨리 갈 수 있는 노드를 찾는다.
보낼 때, 받을 때 다른 경로로 전달될 수 있다.(그때그때 다르다.)
IP 프로토콜의 한계
비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
비신뢰성
중간에 패킷이 사라지면?
패킷이 순서대로 안오면?
프로그램 구분
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
▶ TCP, UDP
인터넷 프로토콜 스택의 4계층
애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층
IP 패킷 안에 TCP 세그먼트가 있고 이안에 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보 등이 들어간다.
TCP 특징
전송 제어 프로토콜
연결지향 - TCP 3 way handshake (가상 연결) SYN -> SYN + ACK -> ACK
데이터 전달 보증
순서 보장(패킷)
신뢰할 수 있는 프로토콜
현재는 대부분 TCP 사용
UDP 특징
하얀 도화지에 비유(기능이 거의 없음)
연결지향 - TCP 3 way handshake X
데이터 전달 보증 X
순서 보장 X
데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
정리
IP와 거의 같음 + PORT + 체크섬 정보만 추가
애플리케이션에서 추가 작업 필요
TCP는 다 좋은데 TCP 3 way handshake를 하려면 시간이 필요, TCP는 손을 댈 수 없다.
UDP는 하얀 도화지와 같기 때문에 최적화할 수만 있다면 이게 더 좋을 수 있다.
▶ PORT
같은 IP 내에서 프로세스 구분
내 PC에서 게임, 화상통화, 웹 브라우저가 실행 중일 때 각 서버에서 오는 패킷을 구분하기 위해 PORT가 있다.
TCP/IP 패킷에는 출발지 IP & PORT, 목적지 IP & PORT, 전송 데이터 등이 있다.
IP가 한 아파트라면, PORT는 그 아파트의 호수라고 보면 된다.
0 ~ 65535 할당 가능
0 ~ 1023 잘 알려진 포트, 사용하지 않는 것이 좋음
FTP - 20, 21
TELNET - 23
HTTP - 80
HTTPS - 443
▶ DNS
IP는 기억하기 어렵다.
IP는 변경될 수 있다.
DNS - Domain Name System
전화번호부
도메인 명을 IP 주소로 변환
DNS 서버에서 도메인을 구매하여 등록할 수 있다.
EX) 도메인 명 : aaa.com / IP : 200.200.200.2
도메인 명이 등록되어 있으면, 위에 2가지 문제가 해결이 된다.