TCP & UDP!

sh_awtylol4·2022년 5월 17일
0

Why?After...

목록 보기
3/3
post-thumbnail

Why bolging?

이렇게 말해줘도 안하면 진짜 취업하기 싫은거임ㅋ - 멋진 멘토님

1. 전송계층! (feat.OSI 7계층, TCP/IP 4계층)

전송계층의 역할

  • 물리계층, 데이터 링크 계층, 네트워크 계층 이 3계층만 있어도 목적지에 데이터 전송이 가능합니다. 하지만 목적지에 데이터가 정상적으로 전달되었는지 판단은 해주지 않습니다.
  • 이처럼 데이터가 손상되거나 유실되는 것을 방지하고 목적지에 신뢰할 수 있는 데이터를 전달하는 역할을 전송 계층이 담당합니다.
  • 전송 계층에는 데이터가 신뢰성이 있는 데이터인지 판단하고 점검하는 기능이 있습니다. 만일 오류가 발생한다면 데이터를 재전송하도록 요청을 보냅니다.
  • 또 다른 역할은 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능을 가지고 있습니다. 예를 들어 웹에 사용되는 데이터인데 메일 프로그램에 보내면 안되는 것처럼 목적지의 애틀리케이션을 식별해야 합니다.

2. TCP/IP!

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있습니다. IP는 패킷 전달여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있습니다. TCPIP위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해 줍니다. HTTP, FTP, SMTP등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 합니다.

3. TCP!

TCP(Transmission Control Protocol)?

네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스 입니다. TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메세지, 세그먼트라는 블록 단위)안정적으로, 순서대로, 에러없이 교환할 수 있게 합니다.

특징!

연결형 서비스

가상 회선 방식을 제공합니다.

  • 3-way handshaking 을 통해 연결을 설정.
  • 4-way handshaking 을 통해 연결을 해저.

흐름제어 (Flow control)

데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지

  • 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막음.
  • 수신자가 윈도우사이즈(window size) 값을 통해 수신량을 정할 수 있음.

혼잡제어 (Congestion control)

네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지

  • 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막음.

신뢰성이 높은 전송 (Reliable transmission)

Dupack-based retransmission

  • 정상적인 상황에서는 ACK 값이 연속적으로 전송되어야 한다.
  • 그러나 ACK값이 중복으로 올 경우 패킷 이상을 감지하고 재전송을 요청한다.

Timeout-based retransmission

  • 일정시간동안 ACK 값이 수신을 못할 경우 재전송을 요청한다.

확인응답(ACK, Acknowledgement)?
송신된 메세지가 수신측에서 정상적으로 수신되었음을 송신측으로 확인 응답하는 것, 오류제어 및 흐름제어를 위해 사용

전이중, 점대점 방식

  • 전이중(Full-Duplex)
    전송이 양방향으로 동시에 일어날 수 있음.
  • 점대점(Point to Point)
    각 연결이 정확히 2개의 종단점을 가지고 있음.
    🚨 멀티태스킹이나브로드캐스팅을 지원하지 않는다.

TCP 연결 및 해제 과정

TCP Connection (3-way handshake)

1. 먼저 open()을 실행한 클라이언트가 SYN을 보내고 SYN_SENT 상태로 대기한다.
2. 서버는 SYN_RCVD 상태로 바꾸고 SYN과 응답 ACK를 보낸다.
3. SYN과 응답 ACK을 받은 클라이언트는 ESTABLISHED 상태로 변경하고 서버에게 응답 ACK를 보낸다.
4. 응답 ACK를 받은 서버는 ESTABLISHED 상태로 변경한다.

TCP Disconnection (4-way handshake)
1. 먼저 close()를 실행한 클라이언트가 FIN을 보내고 FIN_WAIT1 상태로 대기한다.
2. 서버는 CLOSE_WAIT으로 바꾸고 응답 ACK를 전달한다. 동시에 해당 포트에 연결되어 있는 어플리케이션에게 close()를 요청한다.
3. ACK를 받은 클라이언트는 상태를 FIN_WAIT2로 변경한다.
4. close() 요청을 받은 서버 어플리케이션은 종료 프로세스를 진행하고 FIN을 클라이언트에 보내 LAST_ACK 상태로 바꾼다.
5. FIN을 받은 클라이언트는 ACK를 서버에 다시 전송하고 TIME_WAIT으로 상태를 바꾼다. TIME_WAIT에서 일정 시간이 지나면 CLOSED된다. ACK를 받은 서버도 포트를 CLOSED로 닫는다.

🚨주의

  • 반드시 서버만 CLOSE_WAIT 상태를 갖는 것은 아니다.
  • 서버가 먼저 종료하겠다고 FIN을 보낼 수 있고, 이런 경우 서버가 FIN_WAIT 상태가 됩니다.
  • 누가 먼저 close를 요청하느냐에 따라 상태가 달라질 수 있습니다.

4. UDP!

IP를 사용하는 네트워크 내에서 컴퓨터들 간에 메시지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜이다. UDPTCP의 대안이며, IP와 함께 쓰일 때에는 UDP/IP라고 표현하기도 한다. TCP와 마찬가지로 UDP도 한 컴퓨터에서 다른 컴퓨터로 데이터그램이라고 불리는 실제 데이터 단위를 받기 위해 IP를 사용한다. 그러나 UDPTCP와는 달리, 메시지를 패킷(데이터그램)으로 나누고, 반대편에서 재조립하는 등의 서비스는 제공하지 않으며, 특히 도착하는 데이터 패킷들의 순서를 제공하지 않는다. 이 말은 UDP를 사용하는 응용프로그램은, 전체 메시지가 올바른 순서로 도착했는지에 대해 확인할 수 있어야한다는 것을 의미한다. 교환해야할 데이터가 매우 적은(그러므로 재조립해야할 메시지도 매우 적은) 네트웍 응용프로그램들은 처리시간 단축을 위해 TCP 보다 UDP를 더 선호할 수 있다. 일례로 TFTP는 TCP 대신에 UDP를 사용한다.

특징!

포트번호

  • 사용자간의 다른 요청을 구분하기 위함.

체크섬

  • 도착한 데이터의 손상여부를 확인.

5. TCP vs UDP!

표를 통한 비교!

TCPUDP
연결지향형 프로토콜비 연결지향형 프로토콜
바이트 스트림을 통한 연결메세지 스트림을 통한 연결
혼잡제어, 흐름제어혼잡제어와 흐름제어 지원 X
순서 보장, 상대적으로 느림순서 보장되지 않음, 상대적으로 빠름
신뢰성 있는 데이터 전송 - 안정적데이터 전송 보장 X
TCP packet : SegmentUDP packet : Datagram
HTTP, Email, File transfer에서 사용DNS, Broadcasting (도메인, 실시간 동영상 서비스에서 사용)

공통점!

  • 포트 번호를 이용하여 주소를 지정
  • 데이터 오류 검사를 위한 체크섬 존재

차이점!

TCP

  • 연결이 성공해야 통신이 가능함. (연결형 프로토콜)
  • 데이터의 경계를 구분하지 않는다. (Byte-stream Service)
  • 신뢰성 있는 데이터 전송 (데이터의 재전송 존재)
  • 일 대 일(Unicast) 통신

UDP

  • 비연결형 프로토콜 (연결 없이 통신 가능)
  • 데이터의 경계를 구분한다. (Datagram Service)
  • 비신뢰성 있는 데이터 전송 (데이터의 재전송 없음)
  • 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신

출처

After blogging...

UDP? 컴퓨터실에서 스타할 때 나오던 용어가 이런 의미였다니...?!?! 그리고 내가 인터넷을 사용할때 이렇게 많은 일이 한번에 실행되고 있다는 점도 놀라웠다.

profile
포기하는 그 순간이 바로 시합종료예요...

0개의 댓글