본문 바로가기
스터디/IT 기초지식

IT 기초 지식 도서 ⑥ [모두의 네트워크]

by Baekee 2021. 1. 27.

6. 전송 계층 : 신뢰할 수 있는 데이터 전송하기

 

   * 전송 계층(Transport Layer, 트랜스포트 계층)란?

        : 목적지에 신뢰할 수 있는 데이터를 전달, 오류를 점검하는 기능(오류 발생 시, 데이터를 재전송하도록 요청),

          전송된 데이터의 목적지가 어떤 어플리케이션인지 식별

          상위 계층이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 한다.

          데이터가 중복되거나 누락되지 않고 오류없이 순서에 맞게 전송되도록 관리

 

         - 특징

           1. 신뢰성/정확성 : 데이터를 목적지에 문제없이 전달 - 연결형 통신(여러 번 확인 후 데이터 보냄) => TCP

           2. 효율성 : 데이터를 빠르고 효율적으로 전달 - 비연결형 통신(확인 절차 없이 데이터 보냄) Ex) 동영상 => UDP

 

   * TCP(Transmission Control Protocol, 전송 제어 프로토콜)란?

        : 신뢰성/정확성 우선

         연결형 프로토콜

          * 연결형(Connection-oriented)

             : 데이터를 교환하기 전에 연결을 맺고 데이터를 교환하는 동안 계속 연결을 관리하는 프로토콜의 한 형태

          - TCP 헤더

            : TCP로 전송할 때 붙이는 헤더

             1. 출발지 포트 번호(16비트)                                         2. 목적지 포트 번호(16비트)

                                                           3. 일련 번호(32비트)

                                                       4. 확인 응답 번호(32비트)

             5. 헤더 길이(4비트) 6. 예약 영역(6비트) 7. 코드 비트(6비트) 8. 윈도우 크기(16비트)

             9. 체크섬(16비트)                                                      10. 긴급포인터(16비트)

                                                           11. 옵션

 

 

          - 출발지 포트 번호/목적지 포트 번호

            : 전송된 데이터의 목적지가 어떤 어플리케이션인지 구분하기 위한 번호

          - 일련 번호(Sequence number) : 송신 측에서 수신 측에 '원래 데이터의 몇번째 데이터인지' 알려주는 역할

                                                    TCP 패킷의 순서 제어

          - 확인 응답 번호(Acknowledgement number) : 수신 측에서 송신 측에 '몇 번째 데이터를 수신했는지' 알려주는 역할

                         Ex) 10번 데이터 수신 시, 11번 데이터를 송신 측에 요청 = > 확인 응답

          - 재전송 제어 : 일련 번호와 확인 응답 번호를 사용하여 데이터가 손상되거나 유실된 경우 데이터 재전송

          - 코드 비트 : TCP 헤더의 107번째 비트 ~ 112번째 비트

                           6비트

                           연결의 제어 정보 기록

                             URG   ACK   PSH   RST   SYN   FIN

                               0       0       0      0       0      0       초깃값 : 0 / 활성화 : 1

                            1비트 1비트 1비트 1비트 1비트 1비트

                                 - SYN : 연결 요청

                                 - ACK : 확인 응답

                                 - FIN : 연결 종료

 

                              ==>> 연결(Connection) 확립 과정

                                                       컴퓨터1 <==> 컴퓨터2

                                       1. 연결 확립 요청(컴퓨터1 => 컴퓨터2)

                                           URG   ACK   PSH   RST   SYN   FIN

                                             0       0       0      0       1      0       초깃값 : 0 / 활성화 : 1

                                          1비트 1비트 1비트 1비트 1비트 1비트

                                        2. 연결 확립 응답 + 연결 확립 요청(컴퓨터1 <= 컴퓨터2)

                                            URG   ACK   PSH   RST   SYN   FIN

                                              0       1       0      0       1      0       초깃값 : 0 / 활성화 : 1

                                           1비트 1비트 1비트 1비트 1비트 1비트

                                        3. 연결 확립 응답(컴퓨터1 => 컴퓨터2)

                                            URG   ACK   PSH   RST   SYN   FIN

                                              0       1       0      0       0      0       초깃값 : 0 / 활성화 : 1

                                           1비트 1비트 1비트 1비트 1비트 1비트

 

                              ==>> 연결(Connection) 종료 과정

                                                       컴퓨터1 <==> 컴퓨터2

                                       1. 연결 종료 요청(컴퓨터1 => 컴퓨터2)

                                           URG   ACK   PSH   RST   SYN   FIN

                                             0       0       0      0       0           초깃값 : 0 / 활성화 : 1

                                          1비트 1비트 1비트 1비트 1비트 1비트

                                        2. 연결 종료 응답(컴퓨터1 <= 컴퓨터2)

                                            URG   ACK   PSH   RST   SYN   FIN

                                              0       1       0      0       0      0       초깃값 : 0 / 활성화 : 1

                                           1비트 1비트 1비트 1비트 1비트 1비트

                                        2. 연결 종료 요청(컴퓨터1 <= 컴퓨터2)

                                            URG   ACK   PSH   RST   SYN   FIN

                                              0       1       0      0       0      1       초깃값 : 0 / 활성화 : 1

                                           1비트 1비트 1비트 1비트 1비트 1비트

                                        3. 연결 종료 응답(컴퓨터1 => 컴퓨터2)

                                            URG   ACK   PSH   RST   SYN   FIN

                                              0       1       0      0       0      0       초깃값 : 0 / 활성화 : 1

                                           1비트 1비트 1비트 1비트 1비트 1비트

 

                    * 3-way 핸드쉐이크(three-way hanshake)

                      : TCP 통신에서 사용하는 신뢰성을 제공하기 위한 통신 방식

                        컴퓨터 간에 연결을 맺기 위한 초기화 과정으로 세단계로 구성됨

                        데이터를 보내기 전 연결 확립을 위해 패킷 요청을 세번 교환하는 것

 

           - 세그먼트(Segment)

              : TCP 헤더가 붙은 데이터

               (TCP헤더 + 데이터)

 

           - 버퍼(Buffer) : 세그먼트를 일시적으로 보관하는 장소

            - 오버플로(overflow) : 수신 측이 대량으로 데이터가 전송될 경우, 보관하지 못하고 넘치는 경우

            - 윈도우 크기(Window size) : 버퍼의 한계 크기, 얼마나 많은 용량의 데이터를 저장해둘 수 있는지

                                                  확인/응답을 일일이 하지 않고 연속해서 송수신가능한 데이터 크기

 

   * 포트 번호(Port number)란?

        : 컴퓨터가 데이터 통신 시, 통신하고자 하는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위

         어플리케이션을 구분할 수 있도록 만든 번호

         0~65535번 사용 가능

        (0~1023번 : 주요 특정 프로토콜이 사용하도록 예약되어 있는 번호; 잘 알려진 포트(Well-known ports),

                      서버 측 어플리케이션에서 사용

            1024번 : 예약되어있지만 사용되지 않는 포트

     1025번 이상 : 랜덤 포트; 클라이언트 측의 송신 포트)

         웹 브라우저 접속 시, 웹 브라우저에 임의의 포트가 자동으로 할당됨 

              => 서버 측에서는 포트 번호 정해두어야 하지만! 클라이언트 측은 정하지 않아도 됨!

 

   * UDP(User Datagram Protocol)란?

        : 효율성 중시

         비연결형 통신

         연결을 맺을 필요가 없고, 정보 송수신 신호도 필요하지 않는 일방적인 데이터 전달 통신 프로토콜

          Ex) 스트리밍 방식으로 전송하는 동영상 서비스

          * 비연결형(Connectionless)

             : 연결(Connection)에 대한 초기화 과정이 없는 통신

 

          - UDP 헤더

            : UDP로 전송할 때 붙이는 헤더

             1. 출발지 포트 번호(16비트)          2. 목적지 포트 버호(16비트)

             3. 길이(16비트)                          4. 체크섬(16비트)

 

           - UDP 데이터그램

              : UDP 헤더가 붙은 데이터

               (UDP헤더 + 데이터)

   

           - 브로드캐스트(Broadcast) : UDP를 사용하여 랜에 있는 불특정 다수의 컴퓨터나 네트워크 장비에

                                              목적지에 관계없이 데이터를 일괄적으로 보내는 것

                                              네트워크의 모든 컴퓨터와 장비에 같은 패킷을 일괄 전송하는 방식

 

* 대역폭(Bandwidth) : 정해진 시간 동안 전송될 수 있는 데이터의 양(주로 속도 의미), 제한적

 

 

 

 

[출처_모두의 네트워크]

 

댓글