프로그래밍[Univ]/네트워크

[네트워크] TCP & UDP part 1

Cloud Travel 2012. 3. 23. 12:10

* Transport Service와 Protocols
 - 양 종단의 호스트 사이에서 응용 메세지의 전달을 담당
 - 양 종단에서만 실행되므로, 거쳐가는 노드는 알 필요 없다.
 - Transport Layer에는 어떤 Application의 어떤 Process에 연결하는지에 대한 정보가 있어야 한다.
    (Message의 소속을 구별해준다.)

* Port Number  
 - Message가 어느 Process에 해당하는지 알려주는 것으로 Application process Address이다.
 - Port Number의 영역은 다음과 같이 나눠져 있다.
   
 ※ IP주소로 어떤 컴퓨터(Host)로 전달할지를 판별하고 Port Number를 이용해 실행 프로그램을 알아낸다. 
    

* Transport Layer(TL) protocols
 -TL이 많은 것이 좋은가? 적은 것이 좋은가?
 ⓐ TL이 어플리케이션 마다 하나 씩 존재한다면...(많다면)
  > Application 요구에 맞춰서 대응이 가능하다.
  > 복잡해지고, TL계층의 존재의미가 사라진다.
 ⓑ 하나만 있다면...(적다면)
  > 전달 받았을때 각 Application마다 하지 않아도 되는 일을 할 수도 있다.
  > 효율성이 낮아진다.
  ※ 하지 않아도 되는 일 : error 검사
 - Internet 5Layer의 TL에서는 2개를 제공해준다.
  ⓐ TCP : 응용 프로세스가 신뢰할 수 있는 서비스를 제공(에러 검사)
  ⓑ UDP : TL에서 할 일만 하는 것(단순히 process에 message만 전달) 
   > Application 마다 TCP와 UDP 요구하는 것이 각각 다르다.

* UDP  
 - 정보 단위(segment)를 단순히 전달해 주는 역할을 한다.
 - 신뢰도가 필요없는 프로세스에서 사용한다.
 - Header : Application port번호만 존재하면 된다.
   

* TCP
 - 신뢰성 있는 Mesage 전달
 - 신뢰성이란?
  > error제어 : 전자기 신호, 체증 때문에 segment가 변경되었는지 여부를 체크
  > 흐름제어
  > 순서보장 : Packet이 순서대로 잘 들어오는가
  > 체정제어(congestion control)
 - Header : 신뢰성을 위한 여러가지가 필요하다.
   
   ※ Padding : 옵션의 빈공간(32bit를 맞추는데)을 체우기 위한 값                                                                                          

   ※ Option > maximum segment size : 각각의 세그먼티 최대 길이를 알려줌

 - TCP header flag : push(받은 직시 처리), reset(초기화) , urgent(긴급), 이외는 이미 설명


* 스트림 전달방식(TCP의 전달 데이터 전달 방식)
 
 - Buffer를 이용해 packet을 전달한다. Host에선 buffer의 pack순서를 검사하여 오류를 검사하며,
   packet전송이 끝나면 프로세스로 메세지로 전달을 한다.

* TCP연결/해제 과정
 ⓐ 연결과정
  - Sever와 연결이 되있는지 확인을 한다. 3번의 통신이 있어야 연결여부를 확인 할 수 있다.(3-way handshake)
   > TCP header의 Red box인 U,A,P,R,S,F중 A,S flag를 사용한다.
   > sequence number와 acknowledge number가 필요하다
   > sequence number : process의 어디부터 어디까지인지 확인. process의 시작위치를 나타냄
   > acknowledge number : 메세지를 받았다는 것을 나타내며, 그 다음 주소를 보내달라고 요청하는 값. 
     

 ⓑ 해제과정
  - Sever와 연결이 되있는지 확인후, sever가 sequence number를 종료에 맞춰서 준다. 4번의 통신과정이 필요.
   > TCP header의 Red box중 A,F flag를 사용한다.
   > 연결과 동일하게 sequence number와 acknowledge number가 필요하다.
     


* TCP의 에러제어
 - Ack number를 이용해 현재 어디까지 전송을 받았는지 check를 한다.
 - 에러 검출
  > CRC(Link Layer) : 노드를 이동할때마다 이전과 현재의 에러검출 코드를 검사한다.(헤더 level에서 검출)
                               에러 노드 코드는 오버헤드이므로 너무 길어지면안된다. 따라서 모든 error 검사를 안한다.

 

  > Checksum : 에러를 많이 검출하지 못하나 속도가 빠르다. software로 간단히 구현이 가능하다.
 - 에러 정정
  > Forward error connection : 에러 메세지를 보냄

                                           (불필요 한것이 많이 있기 때문에(오버해드 증가) 사용하지 않는다.)

     

  > 재전송 요청
 - 재전송 요청에는 두가지 방법이 있다.
  ⓐ Go-Back-N ARQ

   > 타임아웃 및 보낸쪽의 메세지로 판별후 Sender는 Ack번호가 종료번호와 다르다면 Ack번호부터 다시 보낸다.

      (error가 생긴 곳부터 segment를 다시 보낸다)

  ⓑ Select Repeat ARQ
   > Sender가 보내는 Ack번호에 해당하는 것만 다시 보낸다.
 - TCP의 에러제어 : Select Repeat ARQ와 유사
  > 보내는 사람은 받는 사람이 보낸 Ack number가 무엇인지 확인을 한 후 빈 부분을 보낸다.
   
 -