
- 응용계층
- 웹 브라우저, 네트워크 게임, 채팅 프로그램, SOCKET 라이브러리 등
채팅 프로그램에서 Hello world 라는 메시지를 생성하는 과정
- HTTP : 전송 데이터
- TCP : 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등
- IP : 출발지 IP, 목적지 IP 등
- Ethernet frame : LAN 카드에 등록된 mac address 등 물리적인 요소의 정보가 포함되어져 있다.
- HTTP
- (1) HTTP : 프로그램이 Hello world 라는 메시지 생성
- (2) Socket 라이브러리를 통해 전달
- TCP
- (1) TCP 정보 생성, 메시지 데이터 포함
- Ip
- Ethernet frame
TCP 특징 ( 전송 제어 프로토콜, Transmission Control Protocol )
- 연결지향 - TCP 3 way handshake (가상 연결, 물리적으로 연결 X)
- 데이터 전달 보증
- 데이터 전송 (클라이언트 -> 서버)
- 데이터 확인 (서버 -> 클라이언트)
- 순서 보장
- 패킷1, 패킷2, 패킷3 순서로 전송
- 패킷1, 패킷3, 패킷2 순서로 도착 (클라이언트 -> 서버)
- 패킷2부터 순서 보장되게 재요청 (서버 -> 클라이언트)
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
TCP 3 way handshake ?
( SYN : 접속 요청 / ACK : 요청 수락 )
- 클라이언트가 서버에 SYN 을 보낸다
- 서버가 클라이언트에 SYN + ACK 을 보낸다
- 클라이언트가 서버에 ACK 를 보낸다
=> 참고, ACK 와 함께 데이터 전송 가능
- 데이터 전송
UDP 특징 (사용자 데이터그램 프로토콜, User Datagram Protocol )
- 하얀 도화지에 비유 (기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다. +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
PORT ?
- IP 만으로는 어디서 필요한 패킷인 알수가 없기 때문에 PORT를 사용한다. 서버안에서 돌아가는 애플리케이션을 구분할 때 사용한다.
규칙
0 ~ 65535 : 할당 가능
0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음TELNET - 23HTTPS - 443
- HTTP - 80
- HTTPS - 443
- FTP - 20,21
- TELNET - 23
DNS ?
도메인 네임 시스템 DNS(Domain Name System)
IP는 길고 어려운데다가 변경될 수 있기 때문에 DNS를 사용한다. 도메인명을 IP 주소로 변환한다.
인터넷 네트워크 정리
- 인터넷 통신
- IP (Internet Protocol)
- 복잡한 인터넷 망에서 message를 보내기 위해서 IP 가 있어야 한다.
- But, IP만으로는 message가 도착했는지 신뢰하기 어렵고, PORT라는 개념도 없다.
( + message의 순서가 꼬일 수 있다. )
- TCP, UDP
- 2번의 문제점들을 TCP 프로토콜이 해결
- UDP는 거의 IP와 동일하나, PORT 정도만 추가되는 것. 거의 백지 상태
필요한 상황 시, UDP 프로토콜 위에서 애플리케이션 기능을 확장할 수 있다.
- PORT
- 같은 IP 안에서 통신하는 애플리케이션을 구분하기 위하여 사용한다.
- ex ) IP: 아파트, PORT: 101동 403호
- DNS
- IP는 외우기 어렵고, 변하기 쉬운 반면에 도메인명을 등록해서 사용할 수 있도록 도와줌.