※ 포스팅 내용의 모든 출처는 아래 링크와 같습니다. 작성 내용 오류에 대한 피드백을 환영합니다.
복습을 목적으로 작성한 포스팅이며, 비상업적 목적임을 알립니다.
출처: www.inflearn.com/course/http-웹-네트워크/dashboard
인터넷 통신
- 클라이언트와 서버는 인터넷 망을 통해 서로 메시지를 주고 받음
- 노드들은 IP 주소에 부합하는 위치를 찾아 메시지를 전달함
IP (인터넷 프로토콜)
- 모든 컴퓨터는 IP 주소를 갖고 있음 (아마 요즘은 통신이 가능한 모든 기기는 갖고 있다고 표현하는게 맞을 것이라 생각됨)
- IP는 인터넷 프로토콜 역할
- 지정한 IP 주소(IP Address)에 데이터를 전달함
- 패킷(Packet)이라는 통신 단위로 데이터가 전달됨
프로토콜(Protocol)
컴퓨터나 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약
패킷(Packet)
컴퓨터가 전달하는 데이터의 형식화된 블록
IP 패킷 정보
- 출발지 IP, 목적지 IP, 전송 데이터 등
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 업석나 서비스가 불능 상태여도 패킷 전송
- 이 경우 대상에 메시지가 전달되지 않는 문제가 발생할 수 있음 - 비신뢰성
- 중간에 패킷이 사라지거나, 순서대로 오지 않는 문제
- 메시지가 용량을 초과하는 경우(일반적으로 1,500 bytes) 메시지를 끊어서 전송하는데, 이 과정에서 순서의 문제가 발생할 수 있음 - 프로그램 구분
- 한 IP 내에 실행되는 애프리케이션이 둘 이상일 경우 IP 주소 만으로 어떤 어플리케이션으로 전달하는지 판단 불가
위 세 가지와 같은 한계가 존재하며, 이를 TCP로 해결할 수 있음
TCP/UDP
인터넷 프로토콜 스택의 4계층
애플리케이션 계층 - HTTP, FTP |
전송 계층 - TCP, UDP |
인터넷 계층 - IP |
네트워크 인터페이스 계층 |
이는 메시지가 전송되는 순서로 기억하면 좋을 듯함.
클라이언트카 애플리케이션을 통해 메시지 전송을 요청하고, 이를 전송하며 인터넷을 통해 요청한 IP를 네트워크에서 탐색함
프로토콜 계층
- (애플리케이션) 애플리케이션에서 [Hello, world!] 메시지 생성
- (애플리케이션) SOCKET 라이브러리를 통해 전달
- (OS영역) TCP 정보를 생성하고, 메시지 데이터를 포함
- (OS영역) IP 패킷을 생성하는데, TCP 데이터 포함
- (네트워크 인터페이스 영역) 네트워크 인터페이스에서 LAN 카드와 인터넷을 통해 서버로 전송
이때, IP 패킷은 Ethernet frame에 감싸짐
TCP/IP 패킷 정보
- IP만으로 해결하지 못하였던 문제를 해결할 수 있음
- 전송 데이터
+
TCP 세그먼트 : 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등
+
IP 패킷 : 출발지 IP, 목적지 IP 등
TCP 특징
전송 제어 프로토콜 (Transamission Control Protocol)
아래와 같은 특징들은 TCP/IP 패킷에 추가된 정보들이 존재하기에 가능함
- 연결 지향 - TCP 3 way handshake (가상 연결)
=> 연결을 한 뒤 메시지를 전송해 비연결성 문제 해결 - 데이터 전달 보증
=> 누락된 데이터를 인식해 비신뢰성 문제 해결 - 순서 보장
=> 순서에 따른 비신뢰성 문제 해결
위와 같은 이유로 TCP는 신뢰할 수 있는 프로토콜이며, 현재 대부분 TCP가 사용되고 있음
(1) TCP 3 way handshake
- 클라이언트와 서버 양 측이 연결을 요청하고 수락해 클라이언트와 서버 간 연결을 지향함
- 클라이언트에서 서버에 접속을 요청하면, 서버는 이에 요청 수락과 접속 요청을 동시에 함.
이에 클라이언트가 요청을 수락함으로 데이터 전송 가능 상태가 되는 것임. - 한 마디로 정리하자면 양 측간 연결이 되어야만 데이터 전송이 가능하도록 함
- 이는 물리적인 선으로 연결되는 것이 아닌 논리적인 연결로 되어있음
(2) 데이터 전달 보증
- 클라이언트가 데이터를 서버에 전송하면, 서버는 해당 데이터를 잘 전송받았음을 클라이언트에 알림
(3) 순서 보장
- 클라이언트에서 받은 패킷에 순서가 문제가 있을 때, 서버는 클라이언트에 재 전송을 요청함
UDP 특징
사용자 데이터그램 프로토콜(User Datagram Protocol)
- 기능이 거의 없음
- 연결지향 TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X - TCP는 요청과 응답을 받는 과정을 반복하다보면 속도가 느리거나, 메모리를 차지하는 문제가 발생함
HTTP 3.0은 이를 UDP로 보완함 - 데이터 전달과 순서가 보장되지 않지만, 단순하고 빠름
한 번 더 정리하자면
- IP와 거의 동일함. PORT와 체크섬 두 가지만 추가됨
- 이를 사용하기 위해 애플리케이션에서 추가 작업을 요함
PORT
같은 IP 내에서 프로세스 구분
- 한 IP 주소에서 여러 애플리케이션이 실행되고 있을 때, 한 번에 둘 이상 연결하려면 IP만으로 구분하는 것에 한계가 존재해 PORT가 필요
- 0 ~ 1023은 잘 알려진 포트(Well-known port)로 사용하지 않는 것이 좋음
- IP
- 목적지 서버를 찾기 위함
- 비유: 아파트 - PORT
- IP 내 애플리케이션 구분
- 비유: 동과 호수
DNS(Domain Name System)
- IP의 기억하기 어렵고, 변경될 수 있다는 문제를 해결함
- 도메인 명을 IP 주소로 변환한 것
'Study > Computer Science' 카테고리의 다른 글
[HTTP] URI, 웹 브라우저 요청 흐름 (0) | 2021.05.12 |
---|---|
[OS] 프로세스간 커뮤니케이션 - IPC(InterProcess Communication) (0) | 2021.05.10 |
[스케쥴러] 선점형과 비선점형 스케쥴러 (0) | 2021.03.25 |
[운영체제] 프로세스 스케쥴링 (Process Scheduling) (0) | 2021.03.25 |