인터넷(Internet)은 인터넷 프로토콜 스위트(TCP/IP)를 기반으로 하여 전 세계적으로 연결되어있는 컴퓨터 네트워크 통신망을 일컫는 말이다.
인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약을 의미한다.
컴퓨터의 경우 사용하는 운영체제도 서로 다르고, 프로그램의 경우 아예 구현된 언어가 다르기 때문에 네트워크에서 이들이 통신할 수 있도록 하려면 공통된 통신 규약(프로토콜)이 필요하다.
방대한 네트워크 세상에서 특정 호스트에 데이터를 보내기 위해서는 주소가 IP라는 주소가 필요하다.
패킷은 헤더(Header)+데이터(Payload)+옵션으로 구성된다. 헤더에는 패킷 길이, 프로토콜, 보낸/받는 사람의 IP 주소 등이 담긴다.
클라이언트에서 상대 클라이언트로 패킷을 전달한다.
상대 클라이언트(서버)에서는 패킷을 잘 받았다고 응답을 할 수 있으며 해당 응답 패킷을 전달한다.
애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
TCP : 모든 데이터가 올바르게 전달되도록 하는 신뢰할 수 있는 연결 지향 프로토콜.
UDP : 배달을 보장하지 않거나 패킷이 순서대로 수신되도록 보장하지 않는 신뢰할 수 없는 연결 없는 프로토콜.
인터넷 계층 - IP
Time To Live
패킷의 유효기간을 나타내는 값. 패킷의 무한 루프 방지를 위한 기능으로 만들어졌다. 최대값 255를 가지며 라우터를 거칠 때마다 1씩 차감되고, 0이 되면 해당 패킷은 폐기된다. 패킷이 폐기될 경우 패킷 송신처에 폐기 통지가 발송된다.
네트워크 액세스 계층
참고 자료 : What are the 4 layers of the TCP IP model in networking?
기존 IP 패킷정보의 한계인 비신뢰성과 비연결성을 TCP 정보를 추가함으로써 한계를 극복한다.
전송 제어 프로토콜 (Transmission Control Protocol)
TCP 3-way Handshake
주로 장치 간에 안정적으로 데이터를 전송하기 위해 TCP 소켓 연결을 만드는 데 사용된다. 예를 들어 사용자가 인터넷을 탐색할 때마다 클라이언트 측 웹 브라우저와 서버 간의 통신을 지원한다. 1. SYN(Synchronizer) 접속 요청 메세지 전송
2. SYN + ACK 요청 수락
3. ACK (with 데이터 전송 가능)
참고 자료 : Three-Way Handshake
데이터 전달 보증
흐름 제어(Flow control)
혼잡 제어(Congestion control)
전이중(Full-Duplex), 점대점(Point to Point) 방식
순서 보장
높은 신뢰성을 보장
사용자 데이터그램 프로토콜(User Datagram Protocol)
클라이언트의 요청이 해당 IP 서버에서 도착했을 때 서버에서 두 개 이상의 애플리케이션이 돌아가고 있다면 서버는 이를 어떻게 구분해서 데이터를 전송할 지 구분할 수 있어야 한다. IP가 클라이언트(컴퓨터)를 구분짓기 위한 Port는 애플리케이션을 구분하기 위한 수단이다.
포트 번호는 크게 세 종류로 구분된다.
0번 ~ 1023번: 잘 알려진 포트 (well-known port)
ex) FTP - 20, 21 / TELNET - 23
HTTP - 80 / HTTPS - 443
1024번 ~ 49151번: 등록된 포트 (registered port)
49152번 ~ 65535번: 동적 포트 (dynamic port)
List of TCP and UDP port numbers
도메인 네임 시스템(Domain Name System)
IP 네트워크에서 사용하는 시스템이다. DNS는 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환해준다.
IP는 변경될 수 있고, 모든 웹사이트를 도메인이 대신 아이피 주소로 기억해야 하는 것은 어렵다. 이를 해결하기 위한 것이 DNS다.
참고 자료 : DNS란_cloudflare
DNS란_AWS
통합 자원 식별자(Uniform Resource Identifier, URI)
URL(Uniform Resource Locator)은 인터넷에서 웹 페이지, 이미지, 비디오 등 리소스의 위치를 알려주기 위한 규약이다.
https://www.google.com/search?q=url&hl=ko scheme://[userinfo@]host[:port][/path][?query][#fragment]