TCP/IP란?
TCP/IP는 패킷 통신을 위한 인터넷 규약입니다. 태초에 통신은 연결이 이루어지고 나서 끊어질 때 까지 해당
회선을 완전히 독점하여 사용했습니다. 이러한 통신 방식을 서킷 통신이라고 부릅니다. 이 때 다른쪽에서는
해당 회선을 이용하지 못하고 기다려야 하는 상황이 발생합니 다.
서킷통신의 이러한 단점을 해결하기 위해 나온 방식이 패킷 통신입니다. 패킷통신은 다중망을 사용할 뿐만 아니라
보내는 내용을 잘게 잘라서 보내게 됩니다. 따라서 특정 회선이 끊어지거나 누가 사용하여 통신을 못하게 되는 경우를
예방할 수 있습니다.
TCP와 IP의 특징을 살펴보자면,
IP는 패킷 전달 여부를 보증하지 않습니다. 또한 패킷을 보낸 순서와 받는 순서가 다를 수도 있습니다.
이에 반하여 TCP는 IP위에서 동작하는 프로토콜로, 데이터 전달을 보증하고 보낸 순서대로 받게 해줍니다.
쉽게 말하면 TCP가 데이터의 추적을, IP가 배달을 처리한다고 보시면 됩니다!
TCP/IP 4계층
TCP/IP 4계층은 어플리케이션 계층, 전송 계층, 인터넷 계층, 네트워크 접근 계층으로 이루어져 있습니다.
데이터 전송 시 데이터는 상위 계층에서 하위 계층으로 이동하게 됩니다. 이 때 계층의 이동 마다 필요한
정보인 헤더가 추가되는데 이를 캡슐화라고 부릅니다.
데이터를 수신 시, 데이터는 하위 계층에서 상위 계층으로 이동하고, 계층 이동 마다 추가된 헤더를 읽고 알맞은
조치를 취한 후에 헤더를 제거합니다. 이를 역캡슐화라고 부릅니다.
각 계층별로 조금 더 자세하게 살펴보도록 하겠습니다!
L4 어플리케이션 계층
데이터 단위 - Data/Message
사용자와 가장 가까운 계층으로, 사용자와 소프트웨어 간에 소통을 담당하는 계층입니다.
응용프로그램들이 데이터 교환을 위해 사용되는 프로토콜입니다.
대표적인 예시로 파일전송과 HTTP, 이메일 등이 있습니다.
L3 전송 계층
데이터 단위 - Segment
통신 노드 간의 연결 제어 및 자료의 송수신을 담당합니다.
역캡슐화 과정에서 포트 번호를 사용하여 데이터를 정확한 어플리케이션에 전달하는 역할을 수행합니다.
네트워크 접근 계층과 인터넷 계층을 통해 데이터가 목적 기기 까지 정상적으로 도착하고 나면,
전송 계층은 포트 번호를 사용하여 데이터를 목적지 기기 내에 목표한 어플리케이션으로 전달해줍니다.
대표적인 예시로 TCP, UDP가 있습니다.
L2 인터넷 계층
데이터 단위 - Packet
네트워크상 최종 목적지 까지 정확하게 연결하도록 연결성을 제공해줍니다. 단말 끼리 구분하기 위해 논리적인
주소인 IP를 할당합니다. Segment를 목적지까지 전송하기 위해 시작 주소와 목적지의 논리적 주소를
붙인 패킷 단위로 데이터를 구성합니다.
대표적인 예시로 IP와 ARP가 있습니다.
L1 네트워크 접근 계층
데이터 단위 - Frame
데이터를 전기신호로 변환한 뒤에 물리적 주소인 MAC주소를 활용하여 알맞은 기기로 데이터를 전달하는 계층입니다.
논리적 주소(IP) 가아닌 물리주소(MAC주소) 를 참조해 장비간 데이터 전송을 가능하게 해줍니다.
최종적으로 데이터 전송을 하기 전에 패킷 헤더에 mac주소 부분을 첨부하여 전송합니다.
대표적인 예시로 MAC이 있습니다.
TCP/IP는 이러한 계층을 타고 데이터를 송수신하게 됩니다. 이 과정에서 발생할 수 있는 몇가지 문제점들이 있습니다.
TCP/IP의 흐름제어
수신 측이 송신 측 보다 데이터 처리 속도가 빠르면 문제가 없지만, 송신 측의 속도가 더 빠를 경우에는 문제가 발생합니다.
수신 측의 저장 용량을 초과한 이후에 전송된 패킷은 손실될 수 있기 때문입니다. 만약 그렇게 된다면 불필요한 추가 패킷 전송이 일어나게 됩니다.
흐름 제어는 송신측과 수신측의 TCP 버퍼 크기 차이로 인해 생기는 데이터 처리 속도를 해결하기 위한 기법이라 할 수 있습니다. 흐름 제어의 기본 개념은, 수신측이 송신측에게 자신의 상태를 계속해서 알리는 것입니다.
다시말하면, 수신측에서 데이터를 더 받은 준비가 되어있다는 피드백이 이루어졌을 때 송신측에서 패킷을 이어서
보내도록 하는 것입니다.
Stop and Wait 방식은 매번 정송한 패킷에 대한 ACK 응답을 받으면 다음 패킷을 전송하는 방법입니다. 패킷을
하나씩 보내기 때문에 비효율적인 방법이기도 합니다.
Sliding Window 기법은 수신 측에서 설정한 윈도우 크기만큼 송신 측에서 패킷을 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어 기법입니다.
윈도우 크기는 TCP 버퍼에서 사용하고 있는 부분을 제외한 데이터를 받아 들일 수 있는 공간이며 수신자가 결정하게 됩니다. 윈도우 크기는 데이터 전송 속도를 결정하는 매게변수라고도 할 수 있습니다.
윈도우 크기는 3way handshaking을 통해 수신측에서 송신측으로 확인(ACK)를 보낼 때 TCP 헤더에 담아서 보내게 됩니다. 윈도우는 다시 말하면 TCP 버퍼의 일정 영역이라고 보시면 됩니다.
동작 방식은 다음과 같습니다.
3hand shaking을 통하여 수신측의 수용할 수 있는 윈도우 사이즈는 7이라는 것을 알았습니다.
송신자는 다음과 같이 범위를 설정하고 0과 1인 2개의 프레임을 전송합니다. 슬라이딩 윈도우 구조는 크기가 전송한
데이터 프레임 만큼 줄어들게 됩니다.
이떄 만약 수신측에서 ACK라는 프레임을 받게되면, 전송측은 0,1 데이터를 정상적으로 수신자가 받았음을 알게됩니다.
송신자는 해당 크기만큼 윈도우를 오른쪽으로 확장합니다.
이상으로 TCP/IP에 대해 살펴보았습니다.
감사합니다!
참고 블로그
https://velog.io/@rosewwross/TCPIP
TCP/IP란
여러가지 web protocols중에 비교적 가장 최근에 발명된 통신규약이다.시초는 (역시) 미국이며, 지역네트워크(LAN)과 광역네트워크(WAN)간의 원활한 통신을 위하여 만들어 졌다.email, FTP등 우리에게 친
velog.io
https://wooono.tistory.com/507
[Network] TCP/IP 와 TCP/IP 4계층이란?
패킷 통신이란? 데이터를 패킷이라고하는 작은 단위로 나누어 전송하는 방식을 의미합니다. IP (Internet Protocol) 란? IP는, 패킷 데이터들을 최대한 빨리 특정 목적지 주소로 보내는 프로토콜입니다
wooono.tistory.com
https://carnival.tistory.com/58
OSI 7계층과 TCP/IP 4계층
OSI 7계층 OSI 7계층이란, 통신 접속에서 완료까지의 과정을 네트워크 통신을 구성하는 요소들에 따라 7단계로 정의한 국제 통신 표준 규약이다. 이를 통해 계층별 기능과 통신 과정을 단계별로 파
carnival.tistory.com
https://steady-coding.tistory.com/507
[네트워크] TCP/IP 흐름 제어 & 혼잡 제어
cs-study에서 스터디를 진행하고 있습니다. 흐름 제어 수신 측이 송신 측보다 데이터 처리 속도가 빠르면 문제가 없지만, 송신 측의 속도가 빠를 경우 문제가 생긴다. 수신 측에서 제한된 저장 용
steady-coding.tistory.com
'CS > 네트워크' 카테고리의 다른 글
주소창에 naver.com을 입력하면? (0) | 2023.02.24 |
---|---|
HTTP 프로토콜과 HTTPS에 대하여 (0) | 2023.02.24 |