
1. 인터넷 통신
- 인터넷은 굉장히 복잡한 망을 가지고 있고, 그 수많은 노드들을 거쳐 데이터를 주고 받는다.
- 근데 누구에게 어떻게 가는지 알고 데이터는 전송되는 걸까?
그건 IP를 통해서 지정한 IP 주소로 데이터가 전달되는 것이다.
2. 인터넷 프로토콜 ( IP )
- 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
- 패킷
- IP 전송 계층에서는 패킷으로 데이터를 주고 받는데, 이는 패킷에 출발지 IP, 목적지 IP의 정보를 담아 데이터를 감싸서 전송하는 것이다.
- 그러면 클라이언트-서버의 노드가 많아도 해당 목적지 IP에 맞게 노드를 찾아가서 데이터가 전송된다.
- 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷은 일단 전송
- 비신뢰성
- 중간에 패킷이 사라질 수도 있고,
- 패킷이 순서대로 안올 수도 있다. ( 1,2 ->1,2 BUT, 1,2 -> 2,1 )
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 못찾을 수도 있다.
- 인터넷 프로토콜 4계층
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계츨 - IP
- 네트워크 인터페이스 계층
- 동작을 간략히 설명하면,
- 애플리케이션 계층 : 웹브라우저나 다른 프로그램에서 데이터를 생성
SOCKET 라이브러리를 통해서 TCP/IP 계층으로 전달
- TCP : TCP 정보를 생성, 메시지 데이터를 포함
- IP : TCP 데이터포함, IP 패킷 생성
- 네이퉈크 인터페이스 : LAN 드라이버와 장비를 통해 LAN 카드로 인터넷을 통해 서버로 전달!
- 그래서 흔히 TCP와 IP를 따로 나눠서 표현하기 보단 TCP/IP로 다룬다.

3. TCP / UDP
TCP - 전송 제어 프로토콜(Transmission Control Protocol)
- TCP 특징
- 연결지향 - TCP 3 way handshake (가상 연결)

- 데이터 전달 보증

- 순서 보장

- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
- UDP : 사용자 데이터그램 프로토콜(User Datagram Protocol)
- UDP 특징
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다. +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
- 흔히 동영상 같은 데이터 전송에서 쓰인다.
4. PORT
- 출발지 IP와 목적지 IP를 통해 데이터를 주고 받는데, 게임을 하다 잠시 죽었을 때 인터넷 쇼핑도 하고 영상통화도 할 때, 1개의 IP로 이런 여러 웹을 구별하기 위해서는 PORT를 사용한다.
- TCP에는 출발지 PORT와 목적지 PORT가 존재하며 전송,순서를 제어하는 정보를 담고 있다.
- 그래서 TCP/IP로 부르며 출발지 IP, PORT / 목적지 IP, PORT로 보내며 이는 아파트로 비유할 때, 아파트 단지를 IP, 아파트 동, 호수를 PORT로 비유할 수 있다.
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
- HTTP나 FTP와 같이 자주 쓰이는 PORT는 정해져있다. 그래서 PORT를 내가 지정해서 사용할 때는 0~1023는 사용하면 안되고 그 이상으로 정해서 사용하면 된다.
5. DNS
- DNS : 도메인 네임 시스템(Domain Name System)
- 도메인 명을 IP 주소로 변환
- IP를 도메인명으로 바꿔주고, 클라이언트가 도메인 명으로 전송을 하면 DNS 서버에서 도메인 명에 맞는 IP로 응답해주면 클라이언트는 해당 IP로 서버에 접속한다.
