목차
- Internet이란?
- 데이터 교환 방식
- Internet Protocol
1. Internet
인터넷은 인터넷 프로토콜 스위트를 기반으로 연결되어 있는 컴퓨터 네트워크 통신망을 말한다. 인터넷 프로토콜 스위트(Internet Protocol Suite)란 인터넷에서 컴퓨터들이 정보를 주고받는 데 쓰는 Protocol의 모음들이다.
- IP는 Internet Protocol의 이니셜이다. Inter + network는 여러 통신망을 하나로 연결한다는 의미 + Protocol은 규약, 약속이라는 뜻을 가지고 있다. 즉 Internet Protocol은 여러 통신망이 인터넷 환경에서 통신하기 위한 약속을 의미한다.
2. 데이터 교환 방식
1. 회선 교환 방식
회선 교환 방식은 특정 통신 경로를 설정하여 데이터를 교환하는 방식이다. 통신 중 중간 회선이 조금이라도 문제가 생기거나 끊기면 통신이 단절되고 새로운 경로를 지정해야 하는 단점이 있지만 안정적인 통신을 할 수 있다는 장점이 있다.
2. 메시지 교환 방식
전달하고 싶은 정보를 한 노드에서 다음 노드로 축적 후 전송하는 방법이다. 한 노드에서 정보를 모아야 하기 때문에 정보가 많으면 많을 수록 큰 저장장치가 필요하며 모으는 시간또한 지연이 크기 때문에 다음에 알아볼 패킷 교환 방식으로 대체되어 현재는 사용하지 않는다
3. 패킷 교환 방식
패킷 교환 방식은 사용자가 전달 할 정보를 패킷 (package + bucket)이라는 단위에 넣어 보내는 것을 말한다. 아래의 그림처럼 송신자가 패킷을 보내면 여러 서버들을 거쳐서 수신자에게 전달된다. 요즘은 위의 회선 교환 방식, 메시지 교환 방식 대신 패킷 교환 방식을 사용한다.
3. Internet Protocol
IP프로토콜은 위에서 본 교환 방식 중 패킷 교환 방식을 사용한다. 요즘은 Internet Protocol 즉 IP에 TCP라는 전송 제어 프로토콜(Transmission Control Protocol) 방식을 같이 사용하는데 왜 IP만을 사용하지 않는지 IP 방식의 한계를 알아보자
IP프로토콜의 한계
1. 비연결성 : 패킷을 받을 대산이 없거나 서비스 불능 상태여도 패킷을 전송한다.
- 데이터를 보내려는 서버가 꺼져있거나 서버가 없어졌다해도 대상 서버의 상태를 모르기 때문에 그냥 보낸다.
2. 비신뢰성 : 패킷 전달은 목적지 주소를 가지고 라우터, 허브 등 여러가지 장비를 거쳐서 목적지에 도달하게 되는데 IP는 이 도중 패킷이 손실되도 알 방법이 없다.
3. 패킷 전달 순서 문제
- 패킷의 용량이 너무 커지게 되면 데이터를 끊어서 패킷에 넣어 보내게 된다. 하지만 각 패킷이 회선교환 방식과 같이 같은 노드를 타고 전달되는게 아니기 때문에 데이터가 보낸 순서대로 도착하는게 아닌 이상한 순서로 전달 될 가능성이 있다.
이런 여러가지 문제점 때문에 TCP와 함께 사용한다.
4. TCP(Transmission Control Protocol)
TCP란 앞서 살펴본 IP방식과 함께 사용하여 IP방식의 단점을 보완하는 방식이다. TCP의 대표적인 특징을 알아보자
1. 연결지향 - 3 way handshaking
3 way handshake란 쉽게 이해하면 3단계를 통해 client와 server가 연결되어 있는지를 확인하는 과정이다.
1단계(SYN) : 접속 요청
- client는 server에게 연결 요청 메시지 Synchronize Sequence Number(SYN)이라는 랜덤 숫자를 보낸다.
2단계(ACK + server의 SYN) : 요청 수락
- server는 요청을 수락하고 client에게 수락 확인과 함께 client도 server를 수락해달라고 Acknowledgement number(ACK)를 보낸다 ACK는 SYN+1값을 가진다. 그리고 1단계와 동일하게 SYN을 보낸다.
3단계(client의 ACK)
- 2단계와 반대로 이번엔 client에서 server가 보낸 SYN에 +1한 값인 ACK를 서버에게 보낸다.
사실 3 way handshake는 물리적으로 회선 방식과 같이 연결된 것은 아니지만 서로 요청이 왔으니 논리적으로 연결됐다고 생각하는 것이다.
2. 데이터 전달/순서 보장
TCP는 client가 보낸 데이터에 대해 server에서 받았다는 증거인 응답 패킷이 다시 도착 해야 정상적인 통신이 이루어졌다고 생각한다. 만약 응답 패킷을 받지 못한다면 패킷이 사라졌다고 생각해서 다시 보낸다. 이것을 TCP재전송(TCP Retransmission)이라고 부른다. client가 패킷을 전송하면 Timer를 실행하고 Timer의 시간이 만료되면 다시 패킷을 전송하는 과정을 실행한다. 또한 TCP는 TCP헤더에 순서 번호(Sequence Number)를 부여해 전송 과정에서 패킷의 도착 순서가 전송 순서와 다르게 도착해도 원래 순서대로 재조립이 가능하다. 만약 여기서도 순서 번호가 누락되면 누락된 번호부터 다시 재전송을 요청한다.
이와 같이 TCP는 접속을 확인하고 만약 패킷이 누락되면 재전송을 요청하는 특징을 가지고 있다. 그래서
5. UDP(User Datagram Protocol)
UDP는 IP와 아주 비슷하다. 연결 과정(3 Way Handshaking)이 없기 때문에 TCP보다 훨씬 빠른 전송이 가능하지만 데이터가 사라질 수 있고 데이터 패킷의 순서가 다른 순서로 도착할 수 있다.
UDP를 왜써? 라고 생각할 수 있지만 은근 많이 사용된다.
1. 동영상 스트리밍 서비스 & VoIP
동영상과 음악같은 영상, 음성은 데이터가 빨리 전송돼야 끊김없이 감상할 수 있으므로 TCP보다 빠른 UDP를 사용한다. 하지만 요즘은 웹서비스로 동작하는 스트리밍이 많기 때문에 영상에서도 TCP를 사용한다고 한다.
2. DNS
DNS는 IP주소와 도메인 이름을 변환해주는 역할을 한다. 이때 UDP는 3 hand shake와 같은 연결 동작이 없기 때문에 빠르게 연결을 해주며 DNS서버는 연결 상태를 유지하지 않기 때문에 정보기록을 최소화하고 빠른 UDP가 알맞다.
CS 지식을 공부하고 기록하는 개인 공부 블로그입니다.
내용 중 틀린 부분 피드백 혹은 궁금한 점이 있으면 댓글로 남겨주시면 참고 및 답변 달아드리겠습니다🧐