IP/ TCP / UDP 정리

임태환·2024년 1월 31일

study

목록 보기
3/10

인터넷 통신

인터넷 통신을 하기 위해서는 네트워크 기본 지식이 필요하다
그 이유로는 요청을 보내는 클라이언트와 요청을 받는 서버가 바로 옆에 붙어있지 않으므로
중간에 인터넷 망이 있어 데이터를 안전하게 전송하기 위한 방법이 필요하다

IP란?

IP(Internet Protocol)란 osi 7계층중 3계층인 네트워크 계층에 속하며
인터넷에서 컴퓨터간에 데이터의 전송이 이루어지는 경우 이러한 데이터 통신에 대한
규약이 IP다.

클라이언트와 서버에 ip 주소를 이용하여 원하는 대상을 주소로 식별하여
데이터를 전달할 수 있게 된다.

패킷이라는 통신 단위로 데이터를 전달하는데
IP패킷에는 출발지 IP와 목적지 IP, 전송하는 데이터등이 포함되어 있다.

패킷 구조

IP프로토콜의 한계점

  • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷은 전송된다.
    클라이언트는 대상 서버가 패킷을 받을 수 있는 상태(ex 서버가 내려갔거나)인지 모른다.
    또한 서버가 불능 상태여도 일단 패킷을 전송하고 사라진다.
  • 비신뢰성 : 중간에 패킷이 사라지거나 패킷의 순서고 꼬여서 올 수 있다
    (중간에 노드가 꺼지거나 문제가 생기면 패킷이 소실된다.)
  • 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면
    패킷의 경우에 데이터 용량이 큰 경우 패킷을 여러 개로 쪼개서 보내는데
    이런 경우 순서가 바뀌어 도착할 수 있다 (순서보장을 하지 않는다)

TCP란?(=전송 제어 프로토콜)

위의 IP프로토콜의 한계점을 해결해줄 osi 7계층의 4계층 전송계층에 속해있으며
연결지향형이다

  • 3way handshake로 신뢰성이 있는 연결을 한다.


와이어샤크에서 어느 사이트를 접속했을때 SYN,(SYN,ACK),ACK로 3way handshake를 하는 것이
확인 가능하다.

3way handshake란 클라이언트가 서버로 연결 요청인 SYN을 보내고
서버에서 연결 요청에 대한 응답인 ACK와 연결 확립 요청을 보내게 된다.
이후 클라이언트에서 다시 연결에 대한 응답을 보내며 데이터를 전송한다.

  • 데이터 전달 보증
    클라이언트에서 서버로 데이터 전송 시 서버에서 데이터를 잘 받았다라는 응답 ACK를
    날려줘서 데이터가 전달 여부를 확인할 수 있다.

  • 순서 보장
    순서가 꼬여서 도착한 경우 어느 부분부터 다시 보내라라고 요청을 보낼 수 있다.

  • 흐름 제어 및 혼잡 제어

위의 특징들을 이용할 수 있는 이유는 tcp 세그먼트 덕분이다.
세그먼트안에는 출발지 port와 목적지 port, 전송 제어 정보,순서 정보, 검증 정보들이
포함되어 있다

Port란?
하나의 컴퓨터에서 여러 개의 서버를 사용 시 어느 서버에 접속해야하는지 알 수 있는 방법이
Port다.
Port는 프로토콜 별로 다르다

Port는 0~65535로 할당 가능하며
0~1023은 Well Known Port (유명 서버, 특정 서버)
1024~49151은 Registered Port (등록된 포트)
49152~65535는 Dynamic Port (일반 사용자들이 자유롭게 사용 가능)

4way handshake란
연결을 종료하기 위해 수행되는 절차로

클라이언트가 서버에 연결을 종료하겠다는 FIN플래그를 전송하고
클라이언트는 FIN-WAIT 상태가 된다.
서버에서 FIN플래그를 받고 응답메시지 ACK를 날리고 통신이 끝날 때까지 기다린다.
(CLOSE_WAIT) 상태
이후 연결을 종료할 준비가 되면 연결을 종료하기 위한 FIN플래그를 클라이언트에게
전송한다. (Last_ACK)
클라이언트는 해지 준비가 되었나는 ACK 메시지를 날리고
TIME_WAIT 상태가 된다 이 상태가 되는 이유는 클라이언트에서 세션 종료 후
늦게 도착하는 패킷에 대하여 DROP이 되지 않게 기다리는 과정이다.

UDP란?(=사용자 데이터그램 프로토콜)

TCP처럼 연결 지향적이지도 않으며 기능이 거의 없고
데이터 전달도 보장안하고 순서도 보장하지 않는다.

그런데 왜 사용하는가?
속도가 빠르기 때문에 빠른 응답속도가 중요한 게임에서 많이 사용된다.

IP와 거의 같지만 위에서 설명한 Port와 체크섬 정도만 추가되었다.
애플리케이션에서 추가 작업을 해야한다.

체크섬이란?
데이터의 무결성을 제공하기 위해서 네트워크를 통해 전달되는 값이 변경되었는지
검사하는 값이다.

profile
웹 개발자

0개의 댓글