TCP/IP

Dal.001·2022년 10월 5일
1

서버

목록 보기
2/5
post-thumbnail

TCP/IP란?

TCP/IP는 네트워크에서 데이터 전달과 관련된 Protocol Suit다.
네트워크 상에서 두 기기 간의 통신 규칙/방식이라고 생각하면 편할 것이다.


TCP/IP는 1983년에 처음 등장된 프로토콜로, TCP는 Transmission Control Protocol의 약자이고, IP는 Internet Protocol에 약자다. 물론, 이 두가지 방식만을 얘기하는 것은 아니다. TCP와 IP가 가장 많이 사용 되기 때문에, TCP/IP 라는 이름을 가지게 됐다.

TCP/IP 기존에 많이 사용 되던 OSI 7계층을 대체하는 4~5계층을 가진다.
각각 보내는 사람 부터 받는 사람까지의 데이터 전송 방식을 설명한다.


<_image created by : Chunte7_>


Application Layer

먼저, 제일 위에 개발자에게 가장 친숙한 내용을 닮고 있는 Application Layer다.
사용자와 직접 소통하며 실제 앱에 사용되는 부분을 담당한다.

가장 간단한 예시로 http, ftp(file transfer protocol), SMPT(simple mail transfer protocol)등의 프로토콜이 있다.


Transport Layer

통신과 관련된 내용을 포함하고 있다.
TCP, UDP가 가장 유명한 프로토콜들이다.

TCP

TCP는 UDP보다 느리지만, 신뢰성이 더 높기 때문에 많이 사용된다.
우리가 흔히 알고 있는 HTTP/HTTPS도 TCP를 사용한다.

TCP는 전달하고 싶은 데이터를 패킷으로 나누고, 반대편에서 받은 패킷들을 다시 재조립하는 형태로 통신한다.

또한 TCP는 통신을 시작할 때는 '3-way-handsake', 마칠 때는 '4-way-handsake'를 진행한다.

3-way-handsake에 대해 자세히 얘기해보면, 먼저 클라이언트 쪽에서 요청하고자하는 서버로 SYN 패킷을 던진다. 여기서 SYN synchronize의 약자로, 처음으로 둘 간의 연결을 요청하는 단계다.

요청 받는 쪽에서 syn 패킷을 받았다면, SYN/ACK 패킷을 보낸다. ACK는 acknowledgmet의 약자로, 보낸 리퀘스트를 잘 받았다는 의미의 답장이라고 할 수 있다.

마지막으로 SYN/ACK을 받은 클라이언트에서 ACK 팩킷을 보내는 것으로 통신 시작이 완료된다.


그럼 굳이 왜 3-way-handshake 과정을 거치는 것일까?

그 이유는 상호 불확실성에 있다.
먼저 클라이언트는 연결을 원하다는 의미로 SYN 패킷을 보냈지만, 서버가 잘 받았는지 실제로 연결이 잘 됐는지 알길이 없다.
그래서 서버에서 다시 SYN/ACK 패킷을 보내지만, 이때 서버도 다시 이 패킷을 클라이언트가 잘 받았는지 확인할 길이 없다.

물론 이런 식으로 가면, 무한히 서로 패킷만 던지다가 연결을 진행할 수가 없다. 그렇기 때문에, 최소한의 규칙으로 3-way-handsake를 규정한 것이다.


UDP(User Datagram Protocol)

UDP는 이름에서 볼 수 있듯이, 데이터그램을 사용해서 통신하는 프로토콜이다.

UDP는 TCP와 다르게 비연결성을 지향하기 때문에, 상호간의 연결을 시작하는 handsake와 같은 방식이 필요 없다. 일방적으로 한 쪽에서 데이터를 보내는 것이다.

또한 데이터를 쪼개지 않기 때문에 Applicaiton단에서 쪼개 줘야한다.

그렇기 때문에, UDP는 TCP 보다 신뢰성이 떨어지지만, 전송 속도가 일반적으로 더 빠르다.



Internet Layer

Internet Layer에서는 데이터를 목적지까지 운반하는 방식을 정의한다.
보내는 곳에서 받는 곳까지 잘 찾아 가도록 책임진다.

IP, ICMP(Internet Control Message Protocol), ARP(Address Resolution Protocol) 등의 프로토콜들이 있다.

IP 주소

많이 들어봤을 IP주소는 Internet Protocol 주소의 약자다.
.으로 구분되는 4자리 숫자로 대상의 인터넷 상의 위치를 알려주는 장치다.

xxx.xxx.xxx.xxx 와 같은 형태로 나타내 지는데, 각 자리는 한자리에서 세자리를 가지며, 각각의 수는 0~255 사이의 값을 가진다.

실제로 IP주소는 고유하게 사용되어야 하지만, 점점 인터넷 사용자가 많아지면서 저 방식으로 표현할 수 있는 최대수(4.3억)을 초과했다.

그렇기 때문에, Public IP와 Private IP라는 개념이 등장했다.

Public IP

Public IP는 말 그대로, 공개되어 있는 인터넷 상에서 대상을 식별하기 위한 주소다.
각각 고유의 값을 가지고 있어야하면, IP값에 대응 되는 사용자 정보도 알 수 있다.

여기서도 동적 IP와 고정 IP로 종류가 나눈다.

보통 가정집에서 인터넷을 연결하면 ISP에 의해 인터넷 주소를 부여받게 되는데, 보통은 값이 싼 동적 IP가 많이 사용된다.

동적 IP는 기기를 껐닥 키거나, 특정 사건이 있을 때 IP 주소가 변경될 수 있다. IP 주소 자체가 ISP가 빌려서 사용하는 것이므로, 부족할 때 다른 사람에게 할당 되는 것이다.

고정 IP는 좀 더 비싸고, 노출되면 보안상의 위험이 있을 수 있기 때문에 잘 사용하지 않지만, IP를 고정해서 사용해되는 경우에 사용한다.

Private IP

앞서 말했듯, 세상에 있는 모든 인터넷 상의 기기를 다 합치면, IP 주소로 표현할 수 있는 분량을 넘어선다.

그렇기 때문에, 와이파이 라우터 등에게 IP 주소를 부여하고, 해당 와이파이를 사용하는 핸드폰은 내부에서 Private IP로 구별한다.

이 값은 굳이 고유할 필요는 없지만, 내부 망 안에서는 고유한 값으로 구별 되어야한다.


IP icons created by Freepik - Flaticon



Datalink Layer는 Network Interface Layer라고도 불린다.
여기서는 Internet Layer를 통해 전달 받은 데이터가 내부 망 안에서 원하는 사람에게 잘 전달 되도록 책임진다.

위에서 설명한 Private IP 주소에게 데이터를 전달하는 것이다.
MAC 주소 등을 통해서 원하는 기기에게 데이터를 전달한다.

profile
App/Server Software Engineer

0개의 댓글