What is a computer network?
- 컴퓨터들 간에 데이터 통신망
인터넷 통신
인터넷이란 무엇인가?
인터넷이란 네트워크의 네트워크 즉 여러 거대한 네트워크들이 이어진 네트워크가 바로 인터넷이다.
인터넷의 내부를 살펴보면 모바일 네트워크, 홈 네트워크, institutional 네트워크 등으로 사람들과 밀접한 네트워크들이 존재하고 이러한 네트워크들을 서로 통신시키기 위해 ISP 네트워크가 존재한다.
웹에서 바라본 인터넷
클라이언트와 서버 사이에 인터넷이 존재한다.
복잡한 인터넷 망
- 클라이언트가 인터넷으로 데이터를 보내면 노드 간에 데이터를 전송하고 결국에는 서버로 보내진다.
- 만약 데이터를 가까운 곳이 아닌 미국처럼 멀리 있는 곳으로 데이터를 보내려고 하면 당연히 어떠한 규칙이 존재해야 한다.
IP(인터넷 프로토콜)
IP 주소 부여
클라이언트와 서버 모두 IP 주소를 부여 받아야 한다.
IP(인터넷 프로토콜 역할)
- 지정한 IP 주소(IP Address)에 데이터 전달
- 목적지 IP주소에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
- 위와 같이 데이터를 전달하기 위해 정해놓은 규칙을 IP라 한다.
IP 패킷 정보
- 메시지를 그냥 보내는게 아니라 IP 패킷이라는 규칙에 따라 메시지가 전송된다.
- 전송 데이터를 감싸고 있는 게 IP 패킷인데 여기에는 출발지 IP, 목적지 IP, 기타 정보들이 존재한다.
클라이언트 패킷 전달
- 클라이언트가 메시지를 만들고 해당 메시지를 IP 패킷으로 감싸서 인터넷망으로 보낸다.
- 인터넷망으로 오면 정해진 IP 패킷에 따라 노드들이 다음 노드로 데이터를 보내게 돼서 결국에는 목적지인 서버까지 가게 된다.
서버 패킷 전달
- 클라이언트가 보낸 데이터를 서버가 받으면 서버가 클라이언트에게 데이터를 잘 받았다는 OK 신호(데이터)를 보낸다.
- 해당 신호는 클라이언트가 서버로 데이터를 보낸 것과 같이 똑같은 흐름으로 클라이언트로 보내진다.
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송하는 경우
- 비신뢰성
- 중간에 패킷이 사라지는 경우
- 패킷이 순서대로 안오는 경우
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우 이 둘을 어떻게 구분할지에 대한 문제
대상이 서비스 불능, 패킷 전송
패킷 소실
패킷 전달 순서 문제 발생
TCP UDP
위 IP에서 발생할 수 있는 문제점들을 해결한다.
인터넷 프로토콜 스택의 4계층
프로토콜 계층
패킷 정보
TCP 특징
전송 제어 프로토콜(Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake (가상 연결)
- 연결하고 메시지를 보낸다는 의미
- 데이터 전달 보증
- 패킷 손실을 보완한다.
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
TCP 3 way handshake
- TCP 3 way handshake를 통해 클라이언트가 서버가 잘 연결 됐다는 것을 확인할 수 있다.
- TCP 3 way handshake를 통해 연결 확인이 끝나면 데이터를 전송한다.
데이터 전달 보증
- 2번을 통해 클라이언트에서 서버가 데이터를 잘 받았다는 것을 확인할 수 있다.
순서 보장
- 서버에 패킷이 잘못된 순서로 왔을 경우 서버에서 클라이언트에게 제대로 된 순서로 데이터를 다시 보내라고 메시지를 보낸다.(이때 서버가 받아야 하는 데이터부터 다시 보내라는 의미로 서버에서 3번 과정을 진행한다)
UDP 특징
사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- TCP는 이미 규칙이 정해져 있다 따라서 UDP를 통해 자신만의 규칙을 사용하고 싶을 때 사용한다.
- 실시간 기능에서 사용하기에 좋다.
- 정리
- IP와 거의 같다. + PORT + 체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
PORT
한 번에 둘 이상 연결해야 하면?
- 클라이언트가 IP: 200.200.200.2로 데이터를 보냈는데 이게 게임 관련 데이터인지 화상통화 데이터인지 구분을 해야 한다.
- 이때 port를 통해 구분할 수 있다.
TCP/IP 패킷 정보
- IP는 목적지 서버를 찾을 때 사용한다.
- PORT는 서버 안에서 돌아가는 여러 개의 애플리케이션들 중 연결할 거를 찾을 때 사용한다.
패킷 정보
PORT - 같은 IP 내에서 프로세스 구분
- IP: 아파트
- PORT: 몇 동, 몇 호
- 같은 IP 내에서 PORT 번호를 통해 프로세스를 구분한다.
PORT 번호
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS
IP는 기억하기 어렵다.
IP는 변경될 수 있다.
DNS
도메인 네임 시스템(Domain Name System)
- 전화번호부
- 클라이언트와 서버 사이에 전화번호부 같은 역할을 하는 서버다.
- 도메인 명을 IP 주소로 변환
- DNS 서버에 도메인 명을 보낸다.
- DNS 서버는 등록된 도메인 명에 맞는 IP 정보를 클라이언트에 보낸다.
- 클라이언트는 IP 정보를 받고 해당 IP 주소로 접속한다.
참고
김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리한 내용입니다.
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'네트워크 > HTTP' 카테고리의 다른 글
6. HTTP 상태코드 (1) | 2024.08.04 |
---|---|
5. HTTP 메서드 활용 (0) | 2024.08.04 |
4. HTTP 메서드 (0) | 2024.08.04 |
3. HTTP (0) | 2024.08.03 |
2. URI와 웹 브라우저 요청 흐름 (0) | 2024.08.02 |