#3. 네트워크 [프로토콜, TCP/UDP, IP&MAC, PORT, URL,URI, DNS]
1. 네이티브 애플리케이션 / 웹 애플리케이션
Native Application : 휴대폰과 같이 특정 기기에 설치하여 사용하는 어플리케이션.
[장점]
1. 웹 어플리케이션 보다 빠르다.
2. 설치된 기기의 시스템/리소스에 접근이 용이하다. ex) GPS / 카메라
3. 인터넷 없이 사용이 가능하다.
4. 웹 어플리케이션에 비해 안전하다.
=> 앱 스토어에 올리는 과정에서 수준높은 심사를 거치기 때문.
[단점]
1. 웹 어플리케이션에 비해 개발 비용이 더 들어간다.
2. 빠른 업데이트가 힘들다.
=> 업데이트가 된다면 다른 버젼으로 앱 스토어를 통해 출시를 해야한다.
3. 앱 스토어에 승인 받기가 힘들고 올리는데 비용이 발생한다.
Web Application : 웹 브라우저를 통해 접근이 가능한 어플리케이션.
Website들은 주로 정적인 페이지들의 집합이지만
여기에 동적인 응답을 웹 브라우저라는 소프트웨어를 통해 가능하게 한 어플리케이션.
[장점]
1. 브라우저를 통해 실행되므로 설치나 다운로드가 필요없다. 사용이 용이하다.
2. 업데이트 등의 유지 관리가 쉽다.
3. Native Application에 비해 만들기가 쉽다.
4. 앱 스토어의 승인이 불필요하다.
[단점]
1. 인터넷이 없으면 사용 불가.
2. Native Application에 비해 속도가 느리다.
3. 앱 스토어에서 관리되지 않으므로 노출이 적어 사용자의 접근성이 떨어진다.
4. 질적으로나 보안상 위험에 노출되기가 쉽다.
2. LAN과 WAN
LAN (Local Area Network)
좁은 범위에서 연결된 네트워크.
WAN (Wide Area Network)
수많은 LAN들이 모여 세계의 네트워크를 구성하는 네트워크.
3. Protocol (프로토콜)
인터넷에 연결되어 있는 물리적으로 떨어진 PC 끼리 소통하는 메소드 개념과 같은 공통된 약속/방법.
프로토콜은 클라이언트 - 서버의 통신하는 방법, 약속을 의미하며 이 통신으로 웹 애플리케이션이 구동한다.

다양한 프로토콜이 있는 만큼 각 프로토콜마다 정확한 규정이 있고 이 규정이 지켜져야 컴퓨터가 정상 수행한다.
프로토콜의 사용 규정에 맞는 가이드라인이 API (Application Programming Interface) 이다.
4. TCP (Transmission Control Protocol)
인터넷에서 PC들이서로 정보를 주고받는데 쓰이는 통신 규약의 모음.
다른 PC나 운영체제, 회선간의 통신이 가능하게 해준다.
소속 | TCP / IP 4계층 모델 | 주요 프로토콜 | 역할 |
4 계층 | 응용 계층 | HTTP, DNS, FTP | 애플리케이션에 맞추어 통신 |
3 계층 | 전송 계층 | TCP, UDP | IP와 애플리케이션을 중개해 데이터 전달. |
2 계층 | 인터넷 계층 | IP, ICMP, ARP, RARP | 네트워크 주소를 기반으로 데이터 전송 |
1 계층 | 네트워크 접근 계층 | Ethernet, Wifi | 컴퓨터를 물리적으로 네트워크에 연결해 기기 간의 전송이 가능하게 한다. |
5. IP (Internet Protocol) 주소
IP주소는 TCP/IP 구조에서 컴퓨터를 식별하기 위해 사용되는 네트워크 주소 체계. 네트워크 장비에 할당된 주소.
네트워크 통신에 있어서 각각의 통신기기(PC, 노트북, 스마트폰)를 식별하기 위해 할당된 식별번호를 나타낸다.
쉽게 말해, 편지를 주고 받기 위한 집주소와 같은 개념.
하지만 IP 주소는 통신기기마다 고유하게 할당되어 있는 것이 아니라,
대부분 통신사에 일정 금액을 지불하고 받아오는 것이라 경우에 따라 바뀔 수 있다.
(1) Private IP : LAN 네트워크 내부에서 사용되는 IP 주소.
(2) Public IP : 인터넷에서 사용되는 IP 주소.
IP의 구성은 IPv4 라고도 부르며 xxx.xxx.xxx.xxx의 형태를 가지고있으며
. 를 기준으로 구분 되어진 4개의 그룹인 옥텟(Octet) 으로 구성되며 각 그룹은 0~255의 범위를 갖는다.
(0.0.0.0 부터 255.255.255.255)까지 가능

그리고 항상 IP 주소를 따라다니는 서브넷 마스크(Subnet Mask)라는 것이 있는데,
이것은 IP주소에서 네트워크 주소와 호스트 주소로 나눠주는 역할을 한다.
(1) 네트워크 부 : 어떤 네트워크 인지의 정보
(2) 호스트 부 : 그 네트워크 안의 특정 PC 정보

IP 주소는 MAC 주소와는 다르게 처음부터 주어지는 것이 아니라 할당 되는 것이다.
호스트부가 0으로만 이루어진 것은 네트워크 주소로 그 네트워크를 의미.
호스트가가 1로만 이루어진 것은 BroadCast 주소로 ARP(MAC주소찾기)와 같은 기능을 사용하기 위함.
6. MAC 주소
기기 제조사에서 할당하는 네트워크 기기 하드웨어 고유의 시리얼 번호. 변경될 수 없다.
한 마디로, 그 기계의 고유번호, 그 하드웨어만이 가지고 있는 식별번호, 하드웨어 끼리 구분하기 위한 주소.
예로들면 사람을 식별해주는 주민등록번호 이다.
[MAC 주소의 역할]
그런데 한국을 넘어 북극 끝에있는 A라는 PC와 통신을 하고 싶다.
IP주소는 통신사로부터 구매하는 번호이므로 상황에 따라 변경될 수 있지만,
MAC주소는 해당 PC의 하드웨어 고유의 번호로 변할 수 없는 식별 번호이므로
어느 PC가 A 라는 PC인지 확실하게 확인할 수 있다. 그것이 MAC 주소가 하는 역할이다.
네트워크에 속한 PC간의 통신할 때 전송하고자 하는 데이터가 목적지로 바로 가는 것이 아니라
나와 연결된 목적지 사이 연결된 PC들을 거쳐 전달되는데
이때 나와 연결된 PC간의 통신을 보장해주는 프로토콜이 데이터링크 계층 프로토콜이고 이때 필요한게 MAC 주소.
[ARP란 ?]
A가 B한테 데이터를 전송할 때 전송하는 데이터의 목적지 IP주소와 MAC 주소가 지정되야 전송할 수 있다.
보통 메일을 보내는 경우에 han2041126@gmail.com 으로 도메인주소로 메일을 발송하는데
이 도메인주소가 전송될때는 사실 IP주소로 바뀌어 통신 요청을 하게 된다.
이렇게 우리가 의도하지 않아도 네트워크단에서 IP주소를 가지고
MAC 주소를 알아오게하는 기능을 하는 프로토콜이 있고 그 프로토콜을 ARP (Address Resolution Protocol) 이라 한다.
[ARP의 원리]
IP주소를 MAC주소로 바꿔주는 프로토콜 ARP. 계층형 주소 특징을 이용해 그 주소로 찾아가 MAC주소를 알아낸다.
목적지에 도달하면, 자기가 속한 네트워크에 있는 모든 PC에게 XXX.XXX.XXX.XXX라는 IP를 가진 PC가 누구 인지
확인요청하고 확인된 PC에게 MAC 주소를 보내달라고 요청한다.
[IP주소와 MAC 주소의 차이점]
우선 IP주소와 MAC 주소는 동작하는 Layer가 다르다.
IP주소는 3계층 네트워크 계층 에서 동작, ,MAC주소는 2계층 데이터링크 계층에서 동작.
데이터의 전송에 있어 IP to IP 통신은 MAC to MAC 통신의 연속이다. 결국 IP주소는 MAC주소와 동일.
EX) 한국 A에서 미국 B로 편지를 보낼 때,
IP주소는 A와 B. 즉 끝과 끝을 나타내는 거라면,
MAC 주소는 A부터 B 까지 중간 중간에 연결된 노드들과 통신할 떄 사용하는 주소이다.
편지는 한국 A -> 미국 B로 순간이동 되는 것이 아니라 연결된 노드들끼리 순차적으로 전송이 되어 전달된다.
MAC주소는 물리적으로 연결된 노드와 통신할 때 사용하는 주소다.
IP주소는 네트워크 계층에서 사용되며, MAC 주소는 데이터링크 계층에서 사용된다.
[IP 주소] : 네트워크 주소
[MAC 주소] : 하드웨어 주소, 물리적 주소, 이더넷 주소, BIA
[기기 간의 통신]
A. 회선교환 방식 (Circuit Switching)
주로 음성전화 시스템에 사용하며, 일대일로 데이터를 교환한다.
B. 패킷 교환 (Packet Switching)
원본 데이터를 Packet이라는 작은 단위로 나누고, 여러 회선을 공용해 통신을 주고 받는다.
* Packet : 하나의 Packet에는 Header 와 Payload로 구성되어 있고,
Header에는 어떤 데이터의 몇 번째 데이터인지의 정보와 보내는 곳이나 최종 목적지에 대한 정보가 들어있다.

하지만 IP 프로토콜의 방법인 패킷 교환에는 치명적인 단점들이 존재한다.
(1) 중간에 패킷이 사라지더라도 보내는 기기 측에서는 알 수 없다.
(2) 다른 노드를 거쳐 전송되는 특성상, 보내는 기기 측에서 의도한 순서대로 데이터가 존재하지 않을 수 있다.
(3) 한 IP에서 여러 어플리케이션이 작동하는 경우, 특정할 수 없다.
이를 극복하기 위해 TCP / UDP 가 사용되고 있다.
7. TCP / IP
IP 프로토콜의 2계층 인터넷 계층의 상위
TCP와 UDP는 IP 프로토콜의 계층인 인터넷 계층의 상위인 3계층에 속하며
IP(2계층)와 애플리케이션:HTTP (4계층)을 중개해 데이터를 전달하는 역할을 맡고있다.
[TCP는 통신 신뢰성을 높이는 실현하는 기능이 구현, UDP는 신뢰성을 높이는 기능 대신 높은 속도와 효율성 제공]
이렇게 역할은 동일하지만 아래와 같은 차이점이 있다.
TCP (Transmission Control Protocol) | UDP (User Datagram Protocl) | |
서비스 타입 | 연결 지향적 프로토콜 | 데이터그램 지향적 프로토콜 |
신뢰성 | 데이터 전송 표적 기기까지 전송 보장 | 표적 기기까지의 전송 보장 불가 |
순서 보장 | 전송하는 패킷들의 순서 보장 | 패킷들의 순서 보장 불가, 필요할 경우엔 Application Layer에서 관리되야한다. |
속도 | UDP에 비해 느리다. | TCP와 비교해 빠르고 단순하며 효율적 |
사용처 | 통신 신뢰성을 높이는 기능 : HTTP | 높은 속도와 효율성 : 실시간 스트리밍 |
TCP의 경우, Receiver가 전송 받을 준비가 될 때까지, Segment + SYN 을 반복적으로 재전송한다.
반면 UDP의 경우, 예비 과정 없이 바로 전송을 시작하므로 설정 단계에서 지연이 발생되지 않고 반응속도가 빠르다.
[TCP 3 Way Handshake] : 양 끝단의 기기의 신뢰성 있는 데이터 통신을 위해 TCP 방식이 연결을 설정하는 방식.

[Step 1. SYN] : Synchronize Sequence Number
처음 Sender는 Receiver와 연결 설정을 위해, segment + 랜덤으로 설정된 SYN을 보낸다.
이 요청은 Receiver에게 Sender가 통신을 시작하고 싶다는 의미.
[Step 2. SYN / ACK] : Acknowledgement
Receiver는 받은 요청을 바탕으로 SYN / ACK 신호 세트를 응답.
- ACK : 응답으로 보내는 segment가 유효한 SYN요청을 받았는지 의미.
[Step 3. ACK]
Sender는 받은 ACK를 Receiver에게 전송을 하면서, 신뢰성 있는 연결이 성립되었다는 사실을
Sender와 Receiver 양쪽에서 알 수 있고 실제 데이터 전송이 시작된다.
TCP의 경우 Receiver가 전송 받을 준비가 될 때까지, Segment + SYN 을 반복적으로 재전송한다.
반면 UDP의 경우, 예비 과정 없이 바로 전송을 시작하므로 설정 단계에서 지연이 발생되지 않고 반응속도가 빠르다.
8. PORT
IP 프로토콜(네트워크 상 PC들간의 소통 방법 / 메소드)만 가지고는
한 IP에서 여러 애플리케이션이 동작할 때 특정 애플리케이션을 특정해 통신할 수 없다.
이를 위해 포트번호는 대상 IP 기기의 특정 애플리케이션을 관리하는 번호 역할을 한다.

[위와 같이 한 서버에서 웹 서버와 메일 서버를 동시에 실행 중 이라면, IP주소 만으로는 어느 서버로 보내는지 모른다.]
이를 위해 PORT 번호를 이용해 Receiver를 특정하여 어느 서버로 보내는 요청인지 구별할 수 있다.
Port Number Range | Description | |
Well - Known Port | 0 ~ 1023 | 시스템 사용 번호(슈퍼유저권한필요) |
Registered Port | 1024 ~ 49151 | 특정 프로토콜이나 어플리케이션에서 사용하는 Port 번호 |
Dynamic Port | 49152 ~ 65535 | 어플리케이션 혹은 임시 사용 번호 |
[자주 사용되는 Well Known Port]
PORT Number | Protocol Name | Transport Protocol | Description |
80 | HTTP | TCP | 웹 서버 접속 |
443 | HTTPS | TCP | 웹 서버 접속 (SSL) |
110 | POP3 | TCP | 메일 읽기 |
25 | SMTP | TCP | 메일 서버간 메일 전송 |
22 | SSH | TCP | 컴퓨터 원격 로그인 |
53 | DNS | UDP | DNS 질의 |
123 | NTP | TCP | 시간 동기화 |
9. URL / DNS
- URL (Uniform Resource Locator) : 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 리소스들이 위치한 정보.
URL은 Scheme, hosts, url-path로 구성된다.
(1) Scheme : 통신 방식(프로토콜)을 결정. 일반적으로는 http(s)를 사용.
(2) hosts : 웹 서버의 이름, 도메인, IP를 사용하며 주소를 나타낸다.
(3) Url-path : 웹 서버에서 지정한 루트 디렉토리에서 웹 페이지, 이미지, 동영상이 위치한 경로, 파일명을 나타냄.
API를 통해 서버와 통신할 때, 서버와 통신할 수 있는 Key 역할. 서버에 정의된 문자열에 따라 path가 달라진다.
< URL의 구조 및 역할>
예시 : (1) http:// (2) urclass.codestates.com: (3) 3000/ (4) course/56/curriculum
1) http => 프로토콜
2) urclass.codestates.com => 호스트(도메인)
3) :3000 => 포트번호
4) /course/56/curriculum => URL pathname
위의 URL 구성 중 origin(출처)를 구분하는 기준은 ‘프로토콜’, ‘호스트(도메인)’, ‘포트번호’ 이다.
- URI (Uniform Resource Identifier) : URL의 상위 개념이며 URL + Query, Bookmark를 더한 형태.
[URL의 구조 및 역할]
부분 | 명칭 | 설명 |
file://, http://, https:// | Scheme | 통신 프로토콜 |
127.0.0.1, www.google.com | Hosts | 웹 페이지, 이미지, 동영상 등의 리소스가 위치한 웹 서버, 도메인 혹은 IP |
:80, :443, :3000 | Port | 요청을 어느 서버에 접속하기 위함인지 특정 / 식별하기 위한 코드 |
/search, /Users/username/Desktop | URL-path | 웹 서버의 루트 디렉토리로부터 웹페이지, 이미지, 동영상 등의 파일이 위치까지의 경로 |
q=Java | Query | 웹 서버에 전달하는 추가 질문 |
- 도메인 (Domain) : 웹 브라우저를 통해 특정 사이트에 진입할 때 편의를 위해 복잡한 IP 주소를 대신해 사용하는 주소.

- DNS (Domain Name System) : (1) 루트 네임 서버, (2) TLD (Top Level Domain) 관리 서버, (3) 권한 네임 서버
특정 Website에서 일정기간 동안 네트워크의 특정 도메인을 대여하는 방식인데 이를 관리하는 서버가 DNS 이다.
[URL에 도메인 주소를 입력하면 발생하는 DNS의 lookup 처리 순서]
1.
브라우저는 리졸버에게 URL(도메인)에 대한 IP 주소 요청.
*리졸버 : 요청받은 도메인의 IP 주소를 찾기 위해 여러 네임 서버에 반복적인 질의를 하는 이름 서버.
리졸버는 우선 기존에 찾아본 도메인 정보나 내용이 담긴 캐시 파일을 살펴본다. 있다면 즉시 IP 주소 리턴.
2.
DNS리졸버는 IP주소를 얻기 위해 네임 서버들에게 재귀적인 쿼리를 진행.
루트 네임, 탑 레벨, 권한 있는 도메인 서버에 차례대로 쿼리를 진행하며 IP주소를 알아낸다.
3.
리졸버는 서버로부터 전달받은 URL의 IP주소를 기록하고 브라우저에 전달한다.