Fairy ' s
[6. Apr] TCP/IP 4계층,OSI 7계층 / TIL 본문
TCP/IP 4 계층
- 이론보다는 실용성에 중점을 둔 프로토콜이며, 현대의 네트워크는 대부분 기술 발전을 거쳐, 합리적이고 성능이 우수한 TCP/IP 프로토콜과 이더넷으로 이루어져 있다.
- 물리적 계층에 가까운 부분이 하위 계층, 개발자가 직접 접하게 되는 애플리케이션에 가까운 부분을 상위 계층 이라고 한다.
OSI 7 계층
- 물리 계층 : 물리적인 연결 정보와 전기 신호를 전달하는 데 초점을 두고, 들어온 전기 신호를 그대로 잘 전달하는 것이 목표이다.
- 데이터 링크 계층 : 물리 계층에 들어온 전기 신호를 모아서, 알아볼 수 있는 데이터 형태로 처리 한다. 주소 정보를 처리하고 출발지와 도착지 주소를 확인한 후 데이터 처리를 수행한다.
- 네트워크 계층 : 논리적인 주소(IP 주소)를 정의한다. 라우터를 통해 정의한 IP.주소를 이해하고, 이를 사용해 최적의 경로를 찾아 패킷을 전송한다.
- 전송 계층 : 데이터가 정상적으로 보내지는지 확인한다. 네트워크 계층에서 사용되는 패킷의 유실이나 순서가 바뀌는 것을 바로 잡아주는 역할도 담당한다.
- 세션 계층 : 양 끝 단의 프로세스 연결이 성립하도록 도와주고, 작업을 마친 후 연결을 끊는 역할을 한다.
- 프레젠테이션(표현) 계층 : 일종의 번역기 같은 역할로 MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작을 한다.
- 애플리케이션(응용) 계층 : 애플리케이션 프로세스를 정의하고, 서비스를 수행한다.
OSI 7계층 | TCP/IP 4계층 |
응용 계층 (Application Layer) HTTP, DNS, SSL, SMRP, FTP |
어플리케이션 계층 |
표현 계층 (Presentation Layer) GIF, JPEG, MPEG, MIME, ZIP, ASCII |
|
세션 계층 (Session Layer) RPC, SQL, NETBOIS, Sockets |
|
전송 계층 (Transport Layer) TCP, UDP, NETBEUI |
전송 계층 |
네트워크 계층 (Network Layer) IP, ICMP |
인터넷 계층 |
데이터 링크 계층 (Date Link Layer) FDDI, Ethernet, PPP |
네트워크 인터페이스 계층 |
물리 계층 (Physical Layer) CDMA, GSM, NICs, CSMA/CD, Fiber |
애플리케이션 계층 - HTTP
- HTTP는 응답과 요청을 하는 클라이언트 서버 구조이다.
- 또한 서버가 클라이언트의 상태를 보존하지 않는 무상태 프로토콜이기 때문에 서버 확장성(갑자기 고객이 증가해도 점원을 대거 투입할 수 있다.)이 높지만, 상태가 바뀔 경우 클라이언트가 추가 데이터를 전송 해야 한다는 단점이 있다.
- 로그인이 필요없는 서비스는 무상태로 설계할 수 있지만, 로그인이 필요한 서비스는 유저의 상태를 유지해야 하기 때문에 브라우저 쿠키, 서버 세션, 토큰 등을 이용해 상태를 유지한다.
- TCP/IP : 요청을 주고 받을 동안 연결 유지하며 서버 자원이 계속 소모된다. 응답을 주고나면 연결을 끊어 최소한의 자원으로 서버 유지가 가능하다.
- HTTP 초기 : 자원을 하나 전송할 때마다 연결을 끊는 방식으로 연결을 계속 유지하지 않지만, 빠른 응답을 제공할 수 있거나 트래픽이 많지 않은 경우에선 HTTP의 비연결성 특징은 효율적으로 작동한다.
- HTTP는 초기에 자원을 다운로드하기 위해 비효율적으로 연결과 종료를 반복해야 했다.
- 지속 연결이 된 후, 연결이 이루어지고 난 뒤 각 자원들을 요청하고 모든 자원에 대한 응답이 돌아온 후에 연결을 종료한다.
HTTP 버전
- HTTP/0.9 : GET 메서드만 지원하며, HTTP 헤더가 없다.
- HTTP/1.0 : 메서드와 헤더가 추가 되었다.
- HTTP/1.1 : TCP를 사용하고 현재 가장 중요하며 주로 사용하는 버전이다.
- HTTP/2 : 1.1 버전보다 성능이 더 개선된 HTTP이다.
- HTTP/3 : 아직 진행중이며 TCP 대신 UDP를 사용하며 성능이 개선되었다.
네트워크 계층 - IP / IP Packet
- 인터넷 망 속 수 많은 노드들을 지나 클라이언트와 서버가 통신할 수 있게 하는 주소
- IP는 지정한 IP 주소에 패킷이라는 통신 단위로 데이터를 전달한다.
- 패킷을 이용한 데이터 전송이 목적지에 도착할 시 서버는 도착 했다는 응답을 IP 패킷을 통해 클라이언트에게 전송한다.
- 패킷 : 출발지 IP, 목적지 IP 등의 정보가 포함되어 있다.
IP와 IP 패킷의 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송 된다. 클라이언트는 서버의 상태를 파악할 방법이 없기 때문이다.
- 비신뢰성 : 중간에 있는 서버가 데이터를 전달하던 중 장애가 생겨 패킷이 소실될 수 있다.
또한 전달 데이터의 용량이 클 경우 패킷 단위로 나누어 데이터를 전달하는데, 이 때 패킷들이 서로 다른 노드를 통해 전달될 수 있고, 클라이언트가 의도하지 않은 순서로 서버에 패킷이 도착할 수 있다.
전송 계층 - TCP / UDP
OSI 7계층에서 TCP 프로토콜이 IP 프로토콜보다 더 높은 계층이 존재하기 때문에 앞서 다룬 IP 프로토콜의 한계를 보완할 수 있다.
- * Socket : 네트워크 환경에 연결할 수 있게 만들어진 연결부
- HTTP 메시지가 생성되면 소켓(Socket)을 통해 전달된다.
- 메시지 정보를 포함한 TCP 세그먼트가 먼저 생성되고, TCP 데이터를 포함한 IP 패킷이 생성된다.
- 이렇게 생성된 TCP/IP 패킷은 물리 계층을 지나기 위해 이더넷 프레임워크에 포함되어 서버에 전송된다.
TCP (Transmission Control Protocol) : 전송 제어 프로토콜
- 연결 지향 (3 way handshake)
- 연결 방식 ▼
1. SYN 패킷 전송
2. 서버는 *SYN 요청을 받고 클라이언트에게 요청을 수락한다는 *ACK와 SYN이 설정된 패킷을 발송
3. 서버는 클라이언트가 다시 ACK로 응답하기를 기다림
4. 클라이언트가 서버에게 ACK을 보내면 연결이 성립되며 데이터를 전송할 수 있다. (데이터를 함께 보내기도 함) - 데이터 전달 보증
- 데이터 전송이 성공적으로 이루어지면 이에 대한 응답을 돌려주므로 비연결성을 보완할 수 있다. - 순서 보장
- 패킷이 순서대로 도착하지 않으면 TCP 세그먼트 정보를 토대로 다시 패킷 전송을 요청할 수 있기 때문에 비신뢰성을 보완할 수 있다. - 신뢰할 수 있는 프로토콜
UDP (User Dategram Protocol) : 사용자 데이터그램 프로토콜
- 비 연결 지향
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 기능이 거의 없어 커스터마이징이 가능하다.
- 신뢰성보다는 연속성이 중요한 서비스에 자주 사용됨
세션 계층 - Socket (소켓)
- 클라이언트-서버 구조
- 네트워크 상에서 돌아가는 두 개의 프로세스 간 양방향 통신에 하나의 엔드포인트(IP주소, 포트 번호의 조합)
- 어플리케이션 계층에 존재하는 프로세스들이 데이터를 주고 받기 위해 소켓을 거쳐 전송 계층으로 전달하며 데이터를 송수신 한다.
- 같은 포트에 여러 개의 소켓을 생성하여 사용할 수 있다.
1. 서버는 특정 포트 번호에 바인딩하여 작동하고, 소켓을 통해 클라이언트의 요청을 리스닝하며 대기한다.
2. 클라이언트는 서버의 IP 주소와 포트 번호를 알고 있기 때문에, 해당 서버에 연결을 시도한다.
3. 연결이 진행되고 나면, 서버는 같은 포트에 바인딩 된 새로운 소켓을 형성한다.
4. 기존의 연결된 소켓으로는 연결된 클라이언트의 요청을 처리한다. - 위 과정을 거쳐 소켓을 통해 연결이 완료되면, 데이터를 주고 받은 후 연결이 끊어지는 것이 아니라, 실시간 양방향 통신을 할 수 있다. (채팅 서비스, 스트리밍 서비스에서 주로 이용)
소켓에 포함되는 정보
- 프로토콜
- 호스트(Source) IP 주소
- 호스트 Port 번호
- 목적지(Destination) IP 주소
- 목적지 Port 번호
데이터 링크 계층 - 데이터 링크 레이어
네트워크 인터페이스 카드 (NIC)
- 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치 (노트북과 데탑에선 기본 장착)
- NIC 주요 역할 ▼
- 직렬화 : 전기적 신호를 데이터 신호 형태로 혹은 그 역으로 변환해주는 상호 변환 작업
- MAC(Media Access Control) 주소 : NIC는 고유한 MAC 주소를 가지고 있다. MAC 주소는 네트워크에 접속하는 모든 장비가 가지고 있어야 하는 물리적 주소로, 변경할 수 없도록 하드웨어에 고정되어 있다.
- NIC는 입력되는 전기 신호를 데이터 형태로 만들고 데이터 도착지 MAC 주소를 확인한 후 자신에게 들어오는 전기 신호가 맞는지 확인한다.
- 전기 신호가 자신에게 들어오는 것이 아니면 버리고, 맞으면 데이터를 상위 계층에서 처리할 수 있도록 메모리에 적재한다.
스위치
- 여러 장비를 연결하고 통신을 중재하며, 케이블을 한 곳으로 모아준다.
- 주어진 MAC 주소를 보고 어디로 연결되는지, 포트는 어디인지 확인하며 데이터를 기반으로 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩하는 역할을 한다.
- 포워딩 : 패킷이 스위치에 들어오면 도착지 MAC 주소를 확인하고 자신이 가진 MAC 테이블과 비교해 맞는 정보가 있으면 매치되는 해당 포트로 패킷을 포워딩 한다.
- 필터링 : 포워딩할 때 다른 포트로는 해당 패킷을 보내지 않으므로 이 동작을 필터링이라고 한다.
물리 계층 - 네트워크 엑세스 계층
- 물리적 연결과 관련된 정보를 정의하고, 물리적 장비를 통해 전기신호를 전달하는데에 초점이 맞추어져 있다.
- 전기 신호가 1계층 장비에 들어오면, 이 전기 신호를 재생성하여 내보낸다.
- 장비는 주소의 개념을 이해할 수 없으므로, 전기 신호가 들어온 포트를 제외한 모든 포트에 같은 전기 신호를 전송한다.
- 전기 신호를 전달하기 위해 사용하는 주요 장비 : 허브, 케이블, 리피터, 트랜시버 등
- 허브와 리피터 : 네트워크 통신을 중재
- 케이블과 커넥터 : 케이블 본체를 구성하는 요소
- 트랜시버 : 컴퓨터의 랜카드와 케이블을 연결하는 장비 / 다양한 외부 신호를 컴퓨터 내부 전기신호로 바꾸어 준다.
* SYN : Synchronize / 송신측과 수신측의 송수 타이밍을 맞추기 위한 전송 제어 부호
* ACK : Acknowledgment / 통신문의 확인 응답 문자
* checksum : 중복 검사의 한 형태로, 오류 정정을 통해 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법
* flow control : 받는 사람이 데이터를 받을 수 있는지 확인하는 방법
'Devops Bootcamp' 카테고리의 다른 글
[7. Apr] 아키텍처 / TIL (0) | 2023.04.07 |
---|---|
[6. Apr] 발표 (0) | 2023.04.06 |
[5. Apr] 1st project (0) | 2023.04.05 |
[30. March] 로그 파이프라인 / TIL #2 (0) | 2023.03.30 |
[30. March] 데이터 파이프라인 / TIL #1 (0) | 2023.03.30 |
Comments