네트워크/혼자 공부하는 네트워크

04-02 TCP와 UDP

공부를하자 2024. 8. 4. 09:27

아래의 상기 내용은

"혼자 공부하는 네트워크" 도서 내용과 인터넷의 내용을 실습 정리한 글입니다.

 

1.TCP(Translation Control Protocol)

 1)정의

 -전송계층에서 사용되는 데이터의 신뢰성이 보장되는 연결형 프로토콜.

 2)통신 단계

 3)MSS(Maximum Segment Size)

 -MSS TCP 전송할 있는 최대 페이로드 크기.

-MSS TCP 헤더의 크기는 제외하는 형식을 가진다.

 

4)TCP 세그먼트 구조

 -송신지 포트(source port) 수신지 포트(destination port) : 송신지와 수신지 포트

 -순서번호(sequence number): 순서 번호가 명시되는 필드. 세그먼트의 올바른 순서를 보장을

  위해 사용됨

 -확인 응답번호(acknowledgment number):상대 호스트가 보낸 세그먼트에 대한 응답으로,

 다음으로 수신하기를 기대하는 순서번호가 명시

 -제어 비트(Control bits): 플래그 비트라고 부르며 현재 세그먼트에 대한 부가정보를 나타낸다.

 -윈도우(wnidow): 수신 윈도우의 크기를 명시. 수신 윈도우란 한번에 수신하고자 하는 데이터의

 양을 뜻한다.

 

5)제어비트(Control bits) 필드

 -제어비트는 세그먼트에 대한 부가정보.

 -제어비트는 기본적으로 8비트로 구성된다.

 - 자리의 비트는 각기 다른 의미를 가지는데 대표적으로 ACK,SYN,FIN 존재한다.

 -ACK:세그먼트 승인을 나타내기 위한 비트

 -SYN:연결을 수립하기 위한 비트

 -FIN:연결을 종료하기 위한 비트

 

6)순서번호와 응답번호

 -순서번호와 응답번호의 필드는 TCP 신뢰성을 보장하기 위해 사용되는 중요한 필드.

 -순서번호는 세그먼트의 올바른 송수신 순서를 보장하기 위한 번호로 세그먼트 데이터의

  바이트에 부여되는 번호.

 -전송할 데이터는 MSS 단위로 쪼개지며 MSS마다 순서번호가 존재한다.

 -처음 통신을 위해 연결을 수립할 경우 제어비트 SYN 1 설정된 세그먼트 순서번호는

  무작위 값이 되고 이것을 초기 순서번호(ISN : Initial Sequence Number)이라고 한다.

 -연결 수립이후 데이터를 송신하는 동안 순서번호는 초기순서번호 + 송신한 바이트 수가 된다.

 

 -확인 응답번호는 순서번호에 대한 응답.

 -수신자가 송신자에게 다음에 받아야 순서번호를 보낸다.

 - ACK비트를 1 설정하여 이번에 다음 순서번호+1 형태로 보내게 된다.

 

 

 

 

2.TCP연결수립과 종료

 1)연결수립: 쓰리 웨이 핸드셰이크(three-way-handshake)

 - 단계로 이루어진 TCP 연결 수립 과정.

 

 

-처음 연결 수립 과정을  액티브 오픈(active open)이라고 하며 클라이언트가 서버에 요청하는 행을 말한다.

-반대로 연결요청을 받고 연결을 수립하는 행동을 패시브 오픈(passive opeen)이라고 한다.

 

2)연결 종료

 -연결을 수립한 수신이 끝났다면, 연결을 종료해야 한다.

 -송수신 호스트가 각자 한번씩 FIN ACK 주고받는다.

 

 

 

 

 -연결을 종료하려는 행동을 액티브 클로즈(active close),연결 종료 요청을 받아들이는 행동을

 패시브 클로즈(passive close)라고 한다.

 

3.TCP 상태

 1)개요

 -TCP 통신을 유지하기 위해 다양한 상태를 유지한다

 -상태(state) 현재 어떤  통신 과정에 있는지를 나타내는 정보이다.

 -TCP 상태를 유지하고 활용한다고 하여 스테이트 (state full) 프로토콜 이라고 부른다.

 -상태 분류로는 크게 연결이 수립 되지않은 상태,연결 수립과정에서 있는 상태,

  연결 종료 과정에서 상태.  3가지로 나뉜다.

 

 2)연결 수립이 되지 않은 상태

 -CLOSED : 아무런 연결이 없는 상태.

 -LISTEN : 연결 대기상태 일반적으로 서버로서 동작하는  패시브 오픈 호스트는 LISTEN상태를

 유지한다.

3)연결 수립 상태

 -SYN-SENT: 액티브 오픈 호스트가 SYN 세그먼트를 보낸뒤 그에 대한 응답인 SYN+ACK

  세그먼트를 기다리는 상태. 연결요청을 보낸 대기하는 상태.

 -SYN-RECEIVED:패시브 오픈 호스트가 SYN+ACK 세그먼트를 보낸뒤 ACK 세그먼트를

  기다리는 상태

 -ESTABLSHED:연결이 확립 되었음을 나타내는 상태. 데이터를 송수신 있는 상태를

 의미한다.

 

 

4)연결 종료 상태

 -FIN-WAIT-1: 일반적인 TCP 연결 종료 과정에서 첫단계. FIN 세그먼트로 연결요청을 보낸

 액티브 클로즈 호스트는 FIN-WAIT-1 상태가 된다.

 -CLOSE-WAIT: 종료 요청인 FIN 세그먼트를 받은 패시브 클로즈 호스트가 그에 대한 응답으로

 ACK 세그먼트를 보낸 대기중인 상태

 -FIN-WAIT-2: FIN-WAIT-1 상태에서 ACK세그먼트를 받게 되면 되는 상태. 상대 호스트의

 FIN 세그먼트를 기다리는 상태.

 -LAST-ACK: CLOSE-WAIT 상태에서 FIN 세그먼트를 전송한뒤 이에 대한 ACK 세그먼트를

 기다리는 상태.

 -TIME-WAIT:액티브 클로즈 호스트가 FIN 세그먼트를 수신한 , 이에 대한 ACK 세그먼트를

 전송한 접어드는 상태. 패시브 클로즈 호스트가 마지막 ACK 세그먼트를 수신하면  CLOSED

 상태로 전이하는 한편, TIME-WAIT상태에 접어든 액티브 클로즈 호스트는 일정 시간을 기다린

  CLOSED 상태로 전이합니다.

-CLOSING : 동시에 연결을 종료하려 전이되는 상태. 서로가 FIN 세그먼트를 보내고 받은  그에 대한 ACK 세그먼트를 보냈지만, 아직 자신의 FIN 세그먼트에 대한 ACK세그먼트를

 받지 못할 발생한다. 양쪽 모두가 연결을 종료를 요청하고, 서로의 종료 응답을 기다리는 경우 CLOSING상태가 발생 하는것. 양쪽 ACK 세그먼트를 받으면 종료하게 된다.

 

 

 

4.UDP 데이터그램

 1)정의

  -UDP 전송계층에서 데이터의 신뢰성이 보장되지 않는 프로토콜.

  -TCP 반대로 상태를 가지지 않아 스테이트리스(stateless) 프로토콜 이라고 부른다.

  -UDP 데이터 그램은 TCP비해 단순하다.

 2)구조

 -송신지 포트와 수신지 포트: 송수신지의 포트.

 -길이: 헤더를 포함한 UDP 데이터 그램의 바이트가 담긴다.

 -체크섬 : 데이터 그램 전송과정에서 오류가 발생했는지 검사하기 위한 필드.

  수신지에서 데이터그램 정보가 훼손되었는지 판단되면 데이터그램을 파기한다.

 

 

 

'네트워크 > 혼자 공부하는 네트워크' 카테고리의 다른 글

05-01 DNS와 자원  (0) 2024.08.06
04-03 TCP의 오류,흐름,혼잡 제어  (0) 2024.08.04
04-01 전송 계층 개요: IP의 한계와 포트  (0) 2024.08.01
03-03 라우팅(Routing)  (0) 2024.07.30
03-02 IP주소  (0) 2024.07.29