티스토리 뷰
TCP/IP
1. 네트워크의 시작
인터넷 프로토콜, 즉 IP기반의 네트워크는 아르파넷(ARPANET)프로젝트에서 시작되었다.
기존에 사용되었던 회선교환 방식이 아닌 패킷교환 방식으로 네트워크를 구축하게 되었다.
→ 이를 토대로 현재의 인터넷 통신 방식의 기반이 세워졌다.
📞 회선교환 방식
발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결한다.
연결하고 싶은 상대가 다른 상대와 연결중인 경우, 상대방은 이미 다른 상대와의 전용선과 연결되어있다.
→ 연결이 끊어지고 나서야 상대방과 연결이 가능하다.
특정 회선이 끊어지는 경우 처음부터 다시 연결을 성립해야 한다.
➡︎ 회선교환 방식은 즉시성이 떨어진다는 비효율을 가진다.
📦 패킷교환 방식
패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식
각 패킷에는 출발지와 목적지 정보가 있어 패킷이 목적지를 향해 가장 효율적인 방식으로 이동할 수 있다.
→ 특정 회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터를 전송할 수 있다.
➡︎ 인터넷 프로토콜(IP)은 출발지와 목적지의 정보를 IP 주소라는 특정 숫자값으로 표기하고 패킷단위로 데이터를 전송한다.
2. IP/ IP Packet
클라이언트의 요청이 서버로 무사히 전달되기 위해서 어떤 규칙이 필요할까?
IP 주소를 컴퓨터에 부여하여 이를 이용해 통신한다.
- IP는 지정한 IP 주소에 패킷(Packet)이라는 통신 단위로 데이터를 전달
➰ IP 패킷이란?
패킷은 pack과 bucket이 합쳐진 단어로 소포와 비슷한 의미를 가진다.
IP 패킷은 이를 데이터 통신에 적용한 것으로 출발지 IP, 목적지 IP와 같은 데이터 전송에 필요한 정보가 포함되어 있다.
- 패킷 단위로 전송하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달한다.
→ 복잡한 인터넷 망 사이에서 정확한 목적지로 패킷을 전송할 수 있다.
서버도 데이터를 전송받으면 이에 대한 응답을 돌려줘야 한다.
서버 역시 IP 패킷을 이용해 클라이언트에 응답을 전달한다.
하지만 IP에도 한계는 존재한다.
비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송
- (서버의 상태를 파악할 방법이 없기 때문)
비신뢰성
- 중간에 패킷이 사라질 수 있음
- 클라이언트가 파악할 방법이 없기 때문)
- 패킷의 순서를 보장할 수 없음
- 전달 데이터의 용량이 클 경우 패킷 단위로 나눠 데이터를 전달하기 때문에 중간에 서로 다른 노드를 통해 전달될 수 있다.
3. TCP/ UDP
IP 패킷의 한계점을 보완한다.
네트워크 프로토콜 계층은 OSI 7계층과 TCP/ IP 4계층으로 나뉜다.
- TCP프로토콜이 IP 프로토콜 보다 더 높은 계층에 존재하므로 IP 프로토콜의 한계를 보완할 수 있다.
📩 채팅 프로그램에서 메세지는 보내는 경우
- HTTP 메세지가 생성되면 Socket을 통해 전달됨
- Socket : 네트워크 환경에 연결할 수 있게 만들어진 연결부
- IP 패킷 생선 전 TCP 세그먼트를 생성
- TCP/IP 패킷은 LAN카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임 워크에 포함되어 서버로 전송됨
📦 TCP / IP 패킷
- TCP 세그먼트에는 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함한다.
TCP(Transmission Control Protocol)
전송 제어 프로토콜
- 같은 계층에 속한 UDP에 비해 상대적으로 신뢰할 수 있는 프로토콜
- 특징
- 연결 지향형- TCP 3 way handshake (가상 연결)
- 클라이언트는 서버에 접속을 요청하는 SYN패킷을 보냄
- 서버는 SYN요청을 받고 요청을 수락한다는 ACK와 SYN이 설정된 패킷을 발송, 클라이언트로부터의 ACK응답을 기다림
- 클라이언트가 서버에 ACK을 보내면 연결이 성립되어 데이터를 전송할 수 있음
서버가 꺼져있는 경우 SYN을 보낸 후 응답이 없으므로 데이터를 보내지 않는다.
SYN은 Synchronize, ACK는 Acknowledgment의 약자
( 현재는 최적화가 이루어져 3번 ACK을 보낼때 데이터를 함께 보내기도함 )
-
- 데이터 전달 보증
- 데이터 전송이 성공적으로 이루어진 경우에만 응답을 돌려주기 때문
- 순서 보장
- 패킷이 순서대로 도착하지 않는 경우 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있음
- 신뢰할 수 있는 프로토콜
- 데이터 전달 보증
UDP (User Datagram Protocol)
사용자 데이터그램 프로토콜
- IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
- 체크섬(checksum) : 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법.
- TCP 보다 신뢰성은 낮지만 3 wat handshake 방식을 사용하지 않아 속도는 더 빠르다. → 비 연결지향
- 데이터 전달 보증 X , 순서 보장 X
- HTTP3는 UDP를 사용한다.
- TCP보다는 기능이 거의 없어 하얀 도화지처럼 커스터마이징이 가능하다.
- 신뢰성보다는 연속성이 중요한 서비스에 자주 사용된다.
- 실시간 스트리밍
TCP vs UDP
TCP | UDP |
연결지향형 프로토콜 | 비 연결지향형 프로토콜 |
전송 순서 보장 | 전송 순서 보장 X |
데이터 수신 여부 확인함 | 데이터 수신 여부 확인하지 않음 |
신뢰성 높지만 속도 느림 | 신뢰성 낮지만 속도 빠름 |
🌐 네트워크 계층 모델
1. OSI 7 계층 모델
ISO 국제 표준화 기구에서 제정한 표준 규격
예전엔 같은 회사에서 만든 컴퓨터끼리만 통신이 가능했기 때문에 다른 회사의 시스템이라도 네트워크 유형에 관계없이 상호 통신이 가능한 규약, 즉 프로토콜이 필요했다. 그래서 ISO에서는 제조사에 상관없이 공통으로 사용할 수 있는 네트워크 표준 규격을 정의했다.
📍 표준화를 통해 포트, 프로토콜의 호환 문제를 해결, 네트워크 시스템에서 일어나는 일을 해당 계층 모델을 이용해 쉽게 설명 가능
📍 네트워크 관리자가 문제가 발생한 경우 물리적 문제인지, 응용 프로그램과 관련이 있는지 등 원인을 파악할 수 있음
➰ 7 계층
1계층 - 물리 계층
OSI 모델의 맨 밑에 있는 계층.
시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어하는 계층으로 주로 물리적인 연결과 관련된 정보를 정의한다.
전기 신호를 전달하는데 초점을 두고, 들어온 전기 신호를 그대로 잘 전달하는 것이 목적
디지털 또는 아날로그로 신호 변경
2계층 - 데이터링크 계층
네트워크 기기 간의 데이터 전송 및 물리주소(MAC주소 등)를 결정하는 계층.
물리 계층에서 들어온 전기 신호를 모아 알아 볼 수 있는 데이터 형태로 처리한다.
주소 정보를 정의하고 출발지와 도착지 주소를 확인한 후 데이터 처리를 수행
브리지 및 스위치, MAC 주소
3계층 - 네트워크 계층
OSI 7 계층에서 가장 복잡한 계층 중 하나로서 실제 네트워크 간에 데이터 라우팅을 담당.
➰ 라우팅 : 네트워크 안에서 통신 데이터를 짜여진 알고리즘에 의해 최대한 빠르게 보낼 최적의 경로를 선택하는 과정
IP 패킷 전송
4계층 - 전송 계층
컴퓨터간 신뢰성 있는 데이터를 서로 주고받을 수 있도록 하는 서비스를 제공하는 계층.
하위 계층에서 보낸 데이터들이 실제 정상적으로 보내지는지 확인하는 역할을 한다.
네트워크 계층에서 사용되는 패킷이 유실되거나 순서가 바뀌는 경우 바로잡아주는 역할을 담당
TCP/ UDP 연결
5계층 - 세션 계층
세션 연결의 설정과 해제, 세션 메세지 전송 등의 기능을 수행하는 계층.
컴퓨터간의 통신 방식에 대해 결정하는 계층으로 양 끝 단의 프로세스가 연결을 성립하도록 도와주고, 작업을 마친 후에는 연결을 끊는 역할을 한다.
6계층 - 표현 계층
응용 계층으로 전달하거나 전달받는 데이터를 인코딩 또는 디코딩하는 계층.
번역기 같은 역할을 수행
문자 코드, 압축, 암호화 등의 데이터 변환
7계층 - 응용 계층
최종적으로 사용자와의 인터페이스를 제공하는 계층.
사용자가 실행하는 응용 프로그램(구글, 크롬 등)이 해당 계층에 속한다.
이메일 및 파일 전송, 웹 사이트 조회
HTTP, DNS, SSL ...
💊 데이터 캡슐화
OIS 7계층 모델은 송신 측의 7계층과 수신 측의 7계층을 통해 데이터를 주고 받는다.
각 계층은 독립적이기 때문에 데이터가 전달되는 동안 다른 계층의 영향을 받지 않는다.
- 송신자는 데이터를 보내기 위해 상위 계층에서 하위 계층으로 데이터를 전달한다.
- 데이터를 상대방에게 보낼 때 각 계층에서 필요한 정보를 데이터에 추가함
- 이 정보를 헤더(데이터링크 계층에서는 트레일러)라고 부르며 헤더를 붙여나가는 것을 캡슐화라고 함
- 마지막 물리 계층에 도달하며 송신 측의 데이터링크 계층에서 만들어진 데이터가 전기 신호로 변환되어 수신 측에 전송된다.
- 데이터를 상대방에게 보낼 때 각 계층에서 필요한 정보를 데이터에 추가함
- 수신자는 하위 계층에서 상위 계층으로 데이터를 전달받는다.
- 상위 계층으로 데이터를 전달하며 각 계층에서 헤더를 제거해 나가는 것을 역캡슐화라고 함
- 역캡슐화를 거쳐 마지막 응용 계층에 도달하면 원본 데이터만 남음
2. TCP/ IP 4 계층 모델
OSI 모델을 기반으로 실무적으로 이용할 수 있도록 현실에 맞춰 단순화된 모델
실용성에 기반을 둔 현대의 인터넷 표준
➰ 4 계층
4계층 : 어플리케이션 계층
OSI 계층의 세션 계층, 표현 계층, 응용 계층에 해당하며 TCP/ UDP기반의 응용 프로그램을 구현할 때 사용
- FTP, HTTP, SSH
3계층 : 전송 계층
OSI 계층의 전송 계층에 해당하며 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당
- TCP/ UDP
2 계층 : 인터넷 계층
OSI 계층의 네트워크 계층에 해당하며 통신 노드 간의 IP 패킷을 전송하는 기능 및 라우팅을 담당
- IP, ARP, RSRP
1 계층 : 네트워크 인터페이스 계층
OSI 계층의 물리 계층과 데이터 링크 계층에 해당하며 물리적인 주소로 MAC을 사용
- LAN, 패킷망 등에 사용됨
⚙️ 응용 계층
네트워크 모델의 최상위 계층으로 최종적으로 사용자와의 인터페이스를 제공하는 계층
- 응용 계층은 애플리케이션에 대한 서비스를 사용자에게 제공하는 계층
- 이메일, 파일 전송, 웹 사이트 조회 등
- 애플리케이션은 두 가지로 분류된다.
- 서비스를 요청하는 사용자 측 → 클라이언트
- 웹 브라우저, 메일 프로그램
- 서비스를 제공하는 측 → 서버
- 웹 서버 프로그램, 메일 서버 프로그램
➡︎ 클라이언트와 서버 모두 응용 계층에서 동작한다.
'코딩 > 코드스테이츠' 카테고리의 다른 글
[인증 / 보안] - Token (0) | 2023.03.08 |
---|---|
[인증 / 보안] - Cookie/Session (0) | 2023.03.07 |
[사용자 친화 웹] - 접근성 (0) | 2023.03.02 |
[사용자 친화 웹] - 웹 표준 (0) | 2023.02.28 |
[Redux] - Cmarket Redux (0) | 2023.02.27 |