IP 프로토콜
인터넷 프로토콜 (IP, Internet Protocol)은 송신 호스트와 수신 호스트가 패킷 교환 네트워크(패킷 스위칭 네트워크, Packet Switching Network)에서 정보를 주고받는 데 사용하는 정보 위주의 규약(프로토콜, Protocol)이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다. 줄여서 아이피(IP)라고도 한다.
(ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C)
간단하게 IP 프로토콜은 택배를 예로 들면 우리집에서 목적지에 택배를 보내는 개념이다. 해당 방식으로 IP 프로토콜을 통해 상대에게 데이터를 보내는 개념인데 IP 프로토콜에는 몇가지 문제가 있다.
1. 비 연결형
데이터가 큰 경우 데이터를 쪼개서 보내게 되는데 이에 따라서 쪼개서 데이터를 보내는 경우 순서에 대한 보장이 되어있지 않다. (철수가 밥을 먹었다에서 철수가, 밥을 먹었다 두가지로 쪼개서 보냈는데 상대 IP쪽에서는 밥을 먹었다 철수가 라고 도착 할수도 있는 셈이다)
2. 비 신뢰성
데이터가 올바르게 전송된다는 보장이 없다.A를 보내면 A를 받아야하는데 A가 도착 할수도 있고 안할수도 있다.
간단하게 택배를 목적지에 보냈는데 알고보니 목적지에 살던 사람이 이사가서 택배는 도착했는데 받을 사람이 없다.
혹은 택배가 유실되었는데 찾을 방법이 없다.
3. 프로그램 구분이 되지 않는다.
같은 IP끼리 사용하는 통신에서 해당 어플리케이션이 둘 이상이게 되면 구분을 할 수 없다.
위의 비 연결형과 비 신뢰성은 TCP 를 활용해서 해결하고있다.
TCP
전송 제어 프로토콜(Transmission Control Protocol, TCP, 문화어: 전송조종규약)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다. TCP는 전송 계층에 위치한다. 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로서 국제 인터넷 표준화 기구(IETF)의 RFC 793에 기술되어 있다.(ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C)
3-way Handshake
클라이언트는 서버에 접속 요청(SYN) 을 보낸다 -> 서버는 접속 승인(ACK)및 다시 클라이언트에 접속 요청(SYN)을 보낸다 -> 클라이언트는 접속 승인(ACK)을 보낸다. 위를 통해 장치들 간의 논리적인 접속을 성립해서 정확한 전송을 보장한다.
이렇게 3번 왔다 갔다 하기 때문에 3-way Handshake라고 한다.
이제 TCP를 활용해서 위의 IP 문제를 해결 할 수 있다.
웹 상에서 데이터를 보낸다 -> TCP 정보(출발지의 PORT, 목적지의 PORT, 순서, 정보등)를 담는다.
-> 해당 TCP 정보 위에 IP패킷을 생성해서 감싸준다(출발지 IP, 목적지 IP 등)
-> 랜카드를 통해 서버에 전송해준다.
순서들도 TCP안에 정보가 담겨있기 때문에 순서가 보장되며 정보가 유실될 경우 해당 패킷부터 다시 보내라고 할 수 있기 때문에 데이터의 전달이 보증된다.
UDP
사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 인터넷 프로토콜 스위트의 주요 프로토콜 가운데 하나이다. 1980년에 데이빗 리드가 설계하였고, 현재 IETF의 RFC 768로 표준으로 정의되어 있으며, TCP와 함께 데이터그램으로 알려진 단문 메시지를 교환하기 위해서 사용된다. UDP는 유니버설 데이터그램 프로토콜(Universal Datagram Protocol)이라고 일컫기도 한다.
UDP는 흔히들 하얀 도화지에 비유하고는 한다.
3 way handeshake도 없으며 데이터의 전달및 순서 보장 또한 되지 않는다.
PORT정도만 존재하는 상태이다. 하지만 속도가 빠른장점이 있다.
하얀 도화지이기 때문에 커스터마이징이 용이하다. 따라서 HTTP/3 에는 UDP가 채택되었다
PORT
인터넷 프로토콜 스위트에서 포트(port)는 운영 체제 통신의 종단점이다. 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜이라 하며, 예를 들어 전송 제어 프로토콜(TCP)와 사용자 데이터그램 프로토콜(UDP)가 있다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다. 포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다.
컴퓨터로 작업을 하다보면 게임도 실행하고 인터넷도 실행하고 각각 여러가지를 실행한다.
TCP가 없는 IP로만 데이터를 주고 받게 되면 어떤 정보를 인터넷에 나타내야할 지, 게임에는 어떤 정보를 나타내야할 지 정할수가 없어 혼란이 일어난다. 따라서 PORT를 사용해서 포트 마다 기능및 역할을 할당해서 사용한다
(ex HTTP PORT: 80, HTTPS PORT: 443)
PORT를 예로 들면 IP는 집주소 이라고 할수 있고 PORT는 집 안에 있는 방들이라고 할 수 있다.
한 집에 있지만 각 방마다 역할이 다르다. 집 내에서 각 방들을 나눠주는 개념이 PORT라고 할수 있다.
(아파트를 예로들면 oo 아파트 가 Ip고 x동 x호가 PORT라고 할수 있겠다..)
DNS (Domain Name Service)
도메인 네임 시스템은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호로 변환해 준다
(ko.wikipedia.org/wiki/%EB%8F%84%EB%A9%94%EC%9D%B8_%EB%84%A4%EC%9E%84_%EC%8B%9C%EC%8A%A4%ED%85%9C)
이제 TCP IP등을 활용해서 데이터의 전달과 순서를 보장하게 되었다. 하지만 이제 TCP/IP의 두가지 문제가 있다.
1. IP 주소는 기억하기 힘들다
IP주소는 IPv4 기준 (xxx.xxx.xxx.xxxx) 해당과 같은 방식 IPv6 기준 (xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx) 방식으로 이루어져있다. 각 사이트마다 위와 같은 주소를 전부 외우고 다니는 사람은 없을 것이다.
2. IP 주소는 변경 될 수 있다.
IP주소는 변경 될수 있다. 그럼 해당 IP 주소가 변경될 때마다 보내는 IP를 변경해서 보내줘야하는 불편함이 발생한다.
위와같은 문제점을 해결하고자 DNS가 탄생했다.
간단하게 해당 IP 주소를 도메인 이름으로 변경해주는 개념이다(xxx.xxx.xxx.xxx 가 티스토리의 주소라면 해당 주소를 loy124.tistory.com/ 해당과 같이 변경해준다. )
(도메인 활용 예시)
'프로그래밍 지식 > 웹 개발' 카테고리의 다른 글
HTTP 기본 지식 - HTTP Method (0) | 2021.01.23 |
---|---|
HTTP 기본 지식 - HTTP의 특징 (0) | 2021.01.23 |
HTTP 기본 지식 - URI, URL, URN (0) | 2021.01.10 |
서버 관리자/ 시스템 프로그래머 / 보안 관리자 (0) | 2020.09.22 |
Stateful / Stateless / JWT (0) | 2020.09.22 |