[정리] TCP/IP, TCP/UDP

shininghyunho·2021년 5월 26일
0

CS

목록 보기
2/8

TCP/IP

회선 망을 전부 점유하는 방식을 서킷 통신이라고 하는데 이는 하나의 회선을 점유하기에 단절되면 다시 연결해야하고 누군가 회선을 이용중이라면 기다려야함.

회선을 여러개 추가하여도 결국 연결이 끊기면 처음부터 다시 전송해야하고 가능한 망을 찾아야함.
그래서 나온 방식이 패킷 통신!

데이터를 패킷 단위로 잘게 쪼개서 도착지로 보냄. 쪼개진 패킷들은 남는 회선을 알아서 찾아 목적지까지 도착함. 도착한후 다시 순서에 맞게 조립하고 도착하지 못한 패킷은 다시 재전송을 요청함. (패킷 전송시 TCP는 순서를 지키고 UDP는 순서를 지키지 않음)

이러한 패킷 통신을 위한 인터넷 규약이 TCP/IP.

IP

IP는 단순히 데이터의 조각들을 목적이에 빨리 보내는것만 관심이 있어서 순서가 바뀌거나 패킷이 누락되더라도 신경쓰지 않음.

TCP(Transmission Control Protocol)

TCP는 IP보다는 느리지만 정확하게 보냄. TCP는 일련의 번호를 부여하고 도착한 조각을 다시 올바른 순서로 맞추고 손상되거나 분실된 패킷을 다시 요청함.

HTTP, FTP, SMTP 등의 프로토콜이 TCP/IP 기반임.

TCP/UDP

TCP

위에서 설명한바와 같이 TCP는 정확하게 보냄. 구체적으로 설명하자면 가상회선 방식을 사용해서 논리적인 경로를 배정함.(TCP에서의 패킷을 세그먼트라고 함) 그리고 연결할때는 3-way handshaking을 하고 연결을 끊을때는 4-way handshaking을 함. 게다가 흐름 제어(수신자가 버퍼 오버플로우가 나지 않게 송신자가 데이터 처리 속도를 조절해줌)와 혼합 제어(네트워크 내의 패킷 수가 넘치치 않도록 방지해줌) 기능을 제공해 안전성을 보장함.대신 UDP보다 속도가 느림.

정리하자면 TCP는 속도보단 신뢰성이 중요한 데이터를 전송할때 사용함.

TCP 서버의 특징으로는

  • 서버 소켓은 연결만을 담당함
  • 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용됨
  • 서버와 클라이언트는 1:1 연결됨
  • 스트림 전송으로 전송 데이터의 크기가 무제한
  • 패킷에 대한 응답 때문에 시간 지연, CPU 소모가 발생
  • 손실된 경우 재전송을 하기때문에 streaming 서비스에 불리함

UDP(User Datagram Protocol)

UDP는 TCP와 다르게 비연결형 프로토콜임. 그래서 논리적인 경로가 존재하지 않음.(패킷들이 각자 진행함. 그리고 독립적인 관계를 갖는 패킷을 데이터 그램이라고 함.) UDP 헤더의 CheckSum 비트를 활용해서 간단한 오류 검출만 해줌. 하지만 정보를 보낸다거나 받았다는 신호를 주고 받지는 않음. 대신 TCP보다 속도가 빠름.

UDP 서버의 특징으로는

  • UDP에는 연결자체가 없어 서버 소켓과 클라이언트 소켓 구분이 없음
  • 소켓 대신 IP를 기반으로 데이터를 전송
  • TCP와 달리 1:1, 1:N, N:M 등이 가능함

표로 비교하면 다음과 같다.

프로토콜 종류TCPUDP
연결 방식연결형비연결형
패킷 교환 방식가상 회선 방식데이터그램 방식
전송 순서 보장 여부OX
수신 확인 여부OX
통신 방식1:11:1, 1:N, N:M
신뢰성 보장OX
속도느림빠름

참고

망나니개발자
테크 인터뷰

profile
shining itself

0개의 댓글