Q. 인터넷에서 컴퓨터 둘은 어떻게 통신할까??
Q. 복잡한 인터넷 망을 따라 전하려는 정보가 어떻게 넘어갈까??????
A. IP를 학습해보자
비연결성
비신뢰성
프로그램 구분
이 문제를 해결하는 것이 TCP, UDP
[ 애플리케이션 계층 - HTTP, FTP ]
[ 전송 계층 - TCP, UDP ]
[ 인터넷 계층 - IP ]
[ 네트워크 인터페이스 계층 ]
📌 Hello, world! 전송하기 프로세스
애플리케이션
1. 프로그램이 Hello, world! 메시지 생성
2. socket 라이브러리를 통해 전달
OS
3. TCP가 받은 메시지 데이터 포함해서 TCP 정보 (TCP 세그먼트)생성
4. TCP 정보 포함한 IP 패킷 생성
네트워크 인터페이스'
5. 이더넷 프레임 포함해서 LAN카드로 정보 내보내기
출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 ...
데이터를 TCP 세그먼트가 감싸고 TCP 세그먼트를 IP 패킷이 감싼 형태
: 전송 제어 프로토콜
연결지향 - TCP 3 way handshake (가상연결)
데이터 전달 보증
순서 보장
신뢰할 수 있는 프로토콜
현재는 대부분 TCP 사용
(SYN: 접속요청, ACK: 요청 수락)
⭐ TCP 3 way handshake는 가상연결 (그냥 우리끼리 연결이 됐다 생각하자...! 물리적이 아니라 논리적으로 연결된 것)
💡 TCP 데이터(세그먼트) 안에 전송 제어, 순서, 검증 정보들이 모두 담겨져 있기 때문에 가능!!!
: 사용자 데이터그램 프로토콜
하얀 도화지에 비유(기능이 거의 없음...)
연결지향 - TCP 3 way handshake ❌
데이터 전달 보증 ❌
순서 보장 ❌
데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
정리
Q. 이걸 왜 쓰지???
➡ TCP 하는 일도 많고 데이터도 많다
➡ TCP 프로토콜은 손을 못댐 (이미 인터넷이 모두 TCP로 사용하는중)
➡ UDP는 내가 커스텀 가능 !
➡ 최근 각광받는다
하나의 클라이언트랑 여러 서버와 연결해야 한다면?
(ex. 게임하면서 화상통화하고 웹 브라우저 요청하기)
➡ 같은 IP 내에서 프로세스 구분
IP가 아파트라면 PORT는 몇 동 몇 호
문제 1. IP는 기억하기 어렵다 😡
문제 2. IP는 변경될 수 있다 😡
ex)
도메인 명 | IP |
---|---|
google.com | 200.200.2 |
aaa.com | 210.210.210.3 |