CS

CS)네트워크_TCP&UDP

99duuk 2024. 5. 30. 00:40

 


ㅁ Port 

어떤 프로세스가 있다. 
이 프로세스가 실행되고, 이 프로세스가 
다른 프로세스와 데이터를 주고 받고 싶다.

그러러면 통로가 필요하다
=> process와 연결된 data path 혹은 data channel

 

 

한 컴퓨터 시스템 내에서 여러 포트가 존재할 수 있다.

=> port name을 부여해 식별한다. 

 


포트를 통해 네트워크 통신을 한다.

 

프로세스 간에 통신을 할 때는 

아래쪽 레이어를 사용해서 데이터 통신을 한다.

 

두 호스트 사이에서 데이터를 주고 받는 프로토콜이 Internet 프로토콜이다.

다른 목적지 호스트로 보내는데 전송만 하면 된다.

 

하지만 인터넷 프로토콜데이터가 유실될 수도 있고 순서가 보장되지 않는다. 

즉, 신뢰할 수 없다.

 


 

그러나 프로세스 간의 통신에는 

데이터를 안정적으로 주고 받을 수 있어야 한다. 

=> TCP 프로토콜

 


ㅁ Connection

- 프로세스 간의 안정적이고 논리적인 통신 통로

- connection을 열고, 데이터를 주고 받고, connection을 닫는다.

 

             connection을 열고 -> 3way handshake

             데이터를 주고 받고

             connection을 닫는다. -> 4way handshake

 

 

 

이런 방식을

connection-oriented라고 부른다. 

 


이렇게 연결을 식별하려면 포트를 식별할 수 있어야한다 !

인터넷 상에서 어떻게 port를 유니크하게 식별할까? 

 

- port(number) : 16bit로 이루어진 숫자(0~65535)

     포트넘버 만으로는 유니크하게 식별할 수 없다.

- internet address로 각 host를 유니크하게 식별할 수 있다

 

internet address + port number

= > Socket


ㅁ Socket

인터넷 상에 존재하는 각 port를 유니크하게 식별하기 위한 주소

     한 쌍의 socket은 connection을 유니크하게 식별한다. < src socket, des socket >

-> 하나의 socket은 동시에 여러 connection들에서 사용할 수 있다.


 

ㅁ UDP

- connectionless : 연결을 맺지 않고 바로 데이터를 주고 받는다.

- unreliable : internet protocol을 거의 그대로 사용한다.

UDP에서도 socket을 사용한다. 

 

-> 최종적으로 <protocol, src socket, des socket >으로 유니크하게 식별한다. 

더보기

ex)

불가능 : <TCP, 50.50.50.50, 8080> - <TCP, 50.50.50.50, 8080> 

             

가능 : <UDP, 50.50.50.50, 8080> - <TCP, 50.50.50.50, 8080> 

             

가능 : <TCP, 50.50.50.50, 8080> - <TCP, 50.50.50.50, 7080> 

             

 

 

 


 

 

ㅁ TCP(Transmission Control Protocol)

신뢰성 있는 데이터 전송 

 

1. 연결 지향성

          TCP는 시작하기 전에 송신자와 수신자 간에 연결을 설정한다. 

          이를 위해 3-way-handshake를 사용한다.

2. 데이터 흐름 제어 

          송신자가 수신자의 처리 속도를 초과하지 않도록 데이터 흐름을 조절한다.

          이를 위해 윈도우 크기 조절 기법을 사용한다.

3. 오류 검출 및 수정

          데이터가 손상되거나 누락되지 않도록 확인 응답(ACK)과 재전송 기법을 사용한다.

4. 데이터 순서 보장 

          송신된 데이터가 수신자에게 도달할 때 올바른 순서로 정렬되도록 한다.

5. 세그먼트화

          큰 데이터를 작은 세그먼트로 나누어 전송하고, 수신 측에서 이를 재조립 한다.

 

 

 

[3-way-handshake, 윈도우 크기 조절]

더보기

[윈도우 크기 조절]

네트워크 통신에서 송신자가 수신자의 처리 능력에 맞추어 데이터 전송 속도를 조절하는 기법이다.

이를 통해 네트워크 혼잡을 방지하고 효율적인 데이터 전송을 보장한다. 

수신자가 지정하는 윈도우 크기에 따라 송신자는 동시에 보낼 수 있는 데이터 양을 조절한다. 

 

 

[3-way-handshake]

TCP 연결 설정 과정 3단계

1. SYN : 클라이언트가 서버에게 연결 요청

2. SYN-ACK : 서버가 요청 수락, 응답 보냄

3. ACK : 클라이언트가 서버의 응답 확인하고, 연결 확립

 

 

 

ㅁ UDP(User DataGram Protocol)

빠른 데이터 전송을 위한 비연결형 프로토콜

신뢰성을 보장하지 않지만, 낮은 지연 시간과 간단한 구조로 실시간 애플리케이션에 적합

 

1. 비연결성

    송신자와 수신자 간의 연결 설정 없이 데이터를 전송한다. 따라서 연결 설정과 헤제에 필요한 시간이 절약된다.      

2. 단순한 헤더 구조

          UDP는 TCP보다 단순한 헤더 구조를 가지며, 이는 데이터 전송의 오버헤드를 줄인다.

3. 빠른 전송 속도

          오류 검출 및 수정, 데이터 순서 보장 등의 추가 작업을 하지 않으므로 전송 속도가 빠르다.

4. 멀티 캐스크 및 브로드 캐스트 지원

          멀티캐스트와 브로드캐스트를 지원해 한 번의 전송으로 여러 수신자에게 데이터를 전달할 수 있다.

5. 데이터그램 기반

          데이터를 독립적인 데이터그램 단위로 전송하며, 각 데이터그램은 독립적으로 처리된다.

 

 

[단순한 헤더 구조, 멀티캐스트/브로드캐스트, 데이터그램]

더보기

[단순한 헤더 구조]

최소한의 제어 정보를 포함한 헤더

송신지 포트, 목적지 포트, 길이, 체크섬 등 4개 필드만 포함

처리 속도 높이고 오버헤드 줄임

 

[멀티캐스트]

한 송신자가 다수의 특정 수신자에게 데이터 전송

주로 실시간 스트리밍, 화상 회의 등에 사용한다.

 

[브로드캐스트]

네트워크의 모든 장치에게 데이터를 전송하는 방식이다.

하나의 송신자가 네트워크에 연결된 모든 수신자에게 동일한 데이터를 보낸다.

주로 네트워크 초기화나 특정 알림을 보낼 때 사용한다.

 

[데이터그램] 

독립적으로 전송되는 데이터 단위로, 빠른 전송이 가능하지만 신뢰성은 낮다.

각 데이터그램은 자체적으로 목적지 주소를 가지며, 별도의 연결 설정 없이 전달된다. 

 

 

 

 

 

 

 


■ TCP& UDP

TCP(Transmission Control Protocol)
TCP는 연결 지향적 프로토콜로, 데이터의 신뢰성과 순서를 보장한다.

송신자와 수신자 사이에 안정적인 연결을 설정하여 데이터가 올바르게 전달되도록 한다.

주로 파일 전송, 이메일, 웹 브라우징 등에서 사용한다. 

 

UDP(User DataGram Protocol)
UDP는 비연결 지향적 프로토콜로, 데이터 전송의 신속성을 중시하며,

신뢰성과 순서를 보장하지 않는다.

실시간 전송이 중요한 애플리케이션(예: 스트리밍, VoIP)에서 사용된다.