프로그래밍 농장

about ARP Protocol 본문

TCP-IP 프로토콜

about ARP Protocol

Tennessee201 2021. 6. 14.
728x90

각각의 bevice identify 가능 : bit 값에 따라서 관리(manage)가 간편함

A클래스가 가질수있는 네트워크주소 : 8 bit

B클래스가 가질수있는 네트워크주소 : 16 bit

C클래스가 가질수있는 네트워크주소 : 24 bit

 

- 목적지주소로 사용될수있는 주소

unicast ,broadcast, multicast

 

- 소스주소로 사용될수있는 주소

unicast ( 특별한 주소 1개만 가능 )

 

모두가 0/1일떄 사용되는 주소 ( 0.0.0.0 )

all zero address / all one address

all zero address -> 매우 특수/ 제한적/ but 필수적으로 사용됨 : 처음 device 구매후 설정시 필수사용 -> host와 sever가 소통하면서 DNS, NETWORK 주소등을 설정함 . ( dhcp request ... ) -> 모든 노드가 확인가능하고싶을떄 

 

루프백 주소( loopback address )

127 .. .

시스템내에서 소프트웨어를 test하기위해서 ( ex. 공유기 .. ) 등을 프로세스내에서 소통이 잘되는지 확인하기 위한 주소 -> 시스템 내부에서만 프로세스간 통신을 위해사용 / 네트워크로 나갈수없음 

 

private주소( private address )

주소공간이 32bit뿐이기 때문에 -> global forward 불가능 , 로컬에서만 사용가능

network prefix  (24bit만 사용)

171.16 . .  /  169.254 . .   / 192.168 . . : 공유기주소로 주로사용

network prefix의 마지막 주소 : directed broadcast address 

 

public주소 (public address ) 

전세계적으로 가능 global forwarding 가능 

 

목적지가 broadcast address 까지인 packet은 네트워크 내에서 모든 노드까지전달되지만, 라우터(router)를 만나는 순간 더이상 forward 되지않고 폐기한다. 

->

라우터(router)에서 broadcast packet을 차단(block)하는 이유 : broadcast는 모든 노드에 발생시키기떄문에 overflow가 발생한다. 

 

NAT : private 에 발생된 device들도 public으로 변환해주서어서, globally 하게 사용하능하게 해주는 router

-> 적은 수 에 할당이된 public에 많은 user(device)들을 수용해서 network service를 만들기 위함 

-> privat주소와 public주소 사이를 mapping 해주는 기능을 함. 

 

보통 Network를 설계할때 50-60%가 사용할것이라고 생각하고 구성. -> router의 성능이 50-60프로가 넘어가면 error 발생 :  -> 내가 적은수의 public 주소를 가지고도 많은수의 user들을 service할수있다면 ? -> NAT 

 


 

Packet delivery

 

direct delivery / indirect delivery 공존

 

1. direct delivery가 이루어지는 경우 : sender 와 reciever가 동일 네트워크에 존재할떄 

2. 마지막 router와 destination host 사이일때 

 

-> 라우터에서 

1. packet reception 확인 (수신 패킷확인)

2. destination주소 추출 (목적지주소 추출)

3. 목적지주소와 자신의주소 비교  :  같다면(동일네트워크에 존재) direct delivery    

                                               다르다면 : indirect delivery -> 라우터들을 거쳐서 진행 

 


Forwarding (포워딩) 

목적지로의 경로 결정 후 경로상의 next node에게 패킷을 전송하는것. 

 

- Next-hop 기반 (다음노드) forwading

 전체경로 정보를  라우팅테이블에 반영 X / only next-hop 정보만 반영 

 -> 라우팅 테이블의 크기를 줄일수있음 (메모리사이즈를)

ex) 구글에 접속하려면  20개의 ip주소값을 가져야한다 -> 20 * 32bit -> 구글엔트리 하나에 대해서 640 bit 가 들어있어야함  -> 라우팅메모리가 커짐 : 시스템메모리가 커짐 : 시스템 단가 올라감 : 단가 올라감 

한국에서 구글까지 평균 19개정도의 노드를 거친다 : 라우팅 테이블 

 -> 이때 Next Hop 만 저장함으로써, 효율은 그대로 유지 + 라우팅 테이블의 크기를 줄다는 장점 


- Network-Specific (네트워크 주소) 

host단위의 라우팅 테이블 X /  network prefix 단위의 라우팅 테이블 -> 라우팅 사이즈를 줄일수있다. 

searching process 를 감소시킬수있음

백본 라우팅에 사용되는 dcp프로토콜은 전부 Network=Specific 단위로 되어있음 

(특정지역 , 사이트 단위 ex) 상명대 , 은평구 . . )


- Host-Specific Method (호스트 주소)

로컬 네트워크에서 사용되는 최종목적지 단의 라우팅 테이블의 구조 -> host 단위.

host-specific -> GateWay ->  R 

                                    ->  R

위 와 같은때, host <-> GW 사이에서 호스트 주소단위로 정하여 어떤 라우터로 향할지 결정 

로컬 네트워크에서 최종전달될때 사용 


- Default Method (디폴트 주소)

Default -> 만능키 

Internet = best-effort 서비스

해당하는 노드에 대한 정보(라우팅 테이블)가 없음 

Default entry가 정의되어있음



서브넷이 없는 address 체계에서 forwaing module이 동작하는 방식

패킷 수신 ->  destination address를 추출 -> 주소 비교 (내 주소, 목적지 주소) -> 어떤 클래스인지 확인 -> 클래스에 따라 네트워크 주소 추출 -> . . . . 

 

예제 1 )  인터넷파트에서(class) R1라우터에서의 라우팅 테이블을 구하여라 

170.14.0.0/16  -> 170 = 10101010  :  10

145.80.0.0/16  -> 145 = 10010001  :  10

111.0.0.0/8      -> 111 = 01101111  :  01

192.16.7.0/24   -> 192 = 110000000 : 11

 


- routing(라우팅)  

사전에 routing 정보를 구축하여 각 목적지로의 경로 정보를 구성 

 

라우터의 구조 : input / output / routing processor - 세가지 단계 

-> Switching fabric : 현시점 가장 비쌈 

 

- input port : Physical layer(발생된신호 처리)  -> Data link layer( 0101.. 컴퓨터신호로 변환) -> Queue

- outputport : Queue  -> Data link layer( 0101.. 컴퓨터신호로 변환) -> Physical layer(발생된신호 처리) 

 

기본적인 Switching fabric 구조 : Banyan Switch 

 

 

- Flat routing : 라우터의 엔트리(entry) 갯수가 전부 동일 ( 동일레벨 )  : 소규모 구조 

- Hierarchical routing : [계층적구조] : 영역을 나눈후, 같은 도메인으로 묶였을떄만 동일한 정보공유 -> 확장성이 좋음 ->  라우팅 테이블의 규모가 서로 상이하기 떄문  : 현재 모든 네트워크의 기본 구조 

- Geographical routing : [위치,지리적 라우팅] : ex) GPS정보 , 특수목적으로 사용

 

- IP Protocol 

   - Unreliable & connectionless  

      datagram을 직접전송 : Unreliable 

   - Best-effort :  -> not guarantee : 네트워크에서 제공가능하면 최대한 제공 

   - 각 datagram은 독립적으로 실행 -> ( 목적지만 보고 동작함)  / out-of-order (들어온 순서대로 처리)

   - layer 4 


- TCP protocol : reliable 한 특성을 가짐 : out-of-order 방식해결 : 순차적처리 

                    ICMP : port정보를 전송 

- Datagram = packet : 데이터그램 : 가변성(variable)을 가짐  ->  헤더정보에 total length 들어감( 20 - 60 bytes )

- TTL (Time to live) = hop count (8 bits)  : 이 datagram이 네트워크안에서 지나갈수있는 최대의 수 ( 몇개의 라우터를 거쳐갈수있는지 )    -> packet이 loop되는것을 막을수있다 . -> (최대 64번이 지나면 폐기)

 = Number of hops : ip datagram이 소스로 부터 목적지까지 갈떄 중간에 지나갈수있는 최대의 hope 수 ( router 수) 

- protocol ( 8 bits ) field : 네트워크 계층에서 수신한 값을 어떤 프로토콜을 사용하였는지 판단 ( TCP /UDP )

- header checksum ( 8 bits ) : 비트에서 오류가 생겼을떄 체크 ( Check errors ) 

- flags (3 bits) : used in fragmentation - DF / MF ( Don't fragment / More fragment )

- Source address : The IP address of source (user privacy 포함가능)

- Destination address : The IP address of destination (user privacy 포함가능)

 

첫번쨰 4필드 : 버전 필드  / 두번쨰 4필드 : 헤더의 길이 

 

 

- Header 

-> 기본 20 bytes  / 늘어날수있는 최대 40 bytes  -> 최대 60 bytes 

-> 암호화가 이루어지지않음  ( incapsulation X / 항상 오픈되어있음 )

-payload 

 상위계층에서 내려온 정보가 이곳으로 들어옴 

-> 이 정보들을 네트워크 내에서 처리하기위한 incapsulation 과정을 거치는 곳이 Header 이다.


Example 7.1 

An IP packet has arrived with the first 8 bit shown : 

01000010 

The receiver discards the packet.   Why ? 

 

풀이 : 첫번쨰 4필드 0100   -> 버전 필드 :   0100  =  10진수변환 ->  '4'  : IPv4 라는것을 확인가능 

 ( IPv4 헤더의 최소사이즈 : 20~ 60 bytes )

두번쨰 4필드 0010 = 10진수변환 -> 2  * 4 = 8 bytes 

정답 :

-> 헤더의 최소사이즈(20)에 미달되는 값이 들어옴.  -> 패킷중간에 오류가 생겨서 미달값이 생김 .-> 버림 

 

Example 7.2

In an IP packet, the value of HLEN (Header Length) is 1000 in binary. How many byte of option are being carried by this packet?  

 

풀이 :  헤더길이가 1000 -> 10진수변환 : 8 * (IPv4이므로 *4) : 헤더길이 = 32 bytes 

-> 헤더길이의 최소값 : 20 bytes  :   32(입력값) - 20(기본값) = 12 bytes 의 추가된 옵션을 가지고있음

 

 

Example 7.3

In an IP packet, the value of HLEN(Header Length) is 5 16 and the value of the total length field is 0028 16 . How many bytes of data are being carried by this packet ? 

 

풀이

Header length = 5 * 4 (IPv4 이기때문) = 20 bytes

Total length = 2 * 16 + 8 : 40 bytes

-> 이 패킷의 실제 데이터  : 40 -20 = 20 bytes

 

 


- Fragmentation

 

datagram의 총 크기가 항상 MTU(Maximum Transfer Unit)보다 작아야한다  -> 그래야 분할이 이루어지지않는다.

Fragmentation = 데이터그램이 네트워크를 통과할수있도록 만들어주는것 

 

DF (Don't Fragment)  : 더이상 fragment 될것이 없음

MF (More Fragment)  : 더 fragment 할것이 남음 

 

-> 한번 fragmentation을 진행할경우마다 offset value가 바뀜( fragmentation의 시작점이 바뀜 )

-> bit 값은 워드단위이기 떄문에 : ex)   0000/8 = 0    -    1400/8 = 175     -   2800/8 = 350

 

Example 7.8

 A packet with M bit of 0 has arrived. Is this first fragment, or a middle fragment? Do we know if the packet was fragment ?

 

풀이 : More Fragment 가 0 (더이상없음) 이니까, last segment 이다. (마지막) 

       더이상없음(=분할될것이 없음) 이니까, 애초에 Fragment가 아닐수도있다. 그렇게에 fragment가 아닐수도있다. 

 

 

Example 7.9

A packet with offset of 100 has arrived. HLEN(Header Length) = 5 and the value of the total length field = 100. What is the number of the first byte and the last byte ?

 

풀이 :  offset value : 100 : 8 * 100(total length field) = 800 bytes 부터 시작  ( offset 값은 각 fragment 시 시작값 )

total length = 100 bytes     /    HLEN = 5 * 4(IPv4) = 20 bytes

-> 실제 payload의 사이즈  : 80bytes (=실제 옵션데이터) 
-> 800+80(추가옵션데이터값) :   첫 데이터 bytes : 800  ~  마지막 데이터 bytes : 879  / 다음 시작 offset : 880 ~~>

 


- Options

   TLV의 형태로 되어있다 : type / length / value 

  

- No Operation Option(NO-OP) : 각 옵션을 구분하기위하여 앞이나 끝에 붙혀주는 옵션(구분자 역할) 여러개 사용가능

- End of Operation : last option을 나타냄 / 오직 1개의 End Option을 사용 

- Record Route Option : 소스에서 도착지까지 가는 경로에 있는 거쳐가는 라우터의 정보를 기족하는 옵션 ( 실질적으로 패키지를 manage 하는 입장에서 유용  [ 현재 대부분 안쓰임 ]

 -> 최대 9개의 라우터까지만 저장가능  : 이유는 ? -> 헤더의 최소사이즈가 20 , 60byte이기 떄문에 옵션을 가질수있는 최대 -> 40bytes 이며, IPv4의 주소는 32bit -> 4bytes 가 들어감(한라우터당)  -> 4*9=36까지가능 :  옵션의 끝에 end of operation 옵션이 들어가기떄문에 9개 까지만 가능하다. 

 -> Pointer : 처음을 나타내주기 위한 offset 

-> 처음 시작하는 포인터 시작값 : 4  -> 이후 하나의 주소 추가기록 : 4+4=8의 시작값 ~~ 12byte로 시작 ~~ 16 ~~> 

->  위 그림에서 저장되는 IP 주소값을 잘 보아야함 . : 거쳐간 라우터 패킷들의 값들을 확인 ! 

- Source-Route Option 

정보를 암호화할떄 일반적으로는, Header를 제외한 payload만을 암호화한다. : transroute 사용

-> 소스노드가 루트를 결정하는것 (중간에 거쳐가야할 라우터를 지정)

-> Strict option : 엄격/내가 지정한 루트(라우터)를 반드시 거쳐야함 (보통 네트워크가 작은경우 사용)

-> Loose option : 내가 지정한 루트를 지나가기는 하는데 순서상 중간에 다른 노드가 껴도 상관없음 ] (대부분 글로벌 네트워크일떄 - 그나마 요즘 사용 )

Strict option과 Loose option의 차이 : 융통성없이 지정한것만 따름 : Strint option / 융통성있지 지절한부분 거치기만하면됨 : Loose option

                                                  <Source-Route option>

 

- Timestamp Option

라우터에서 datagram을 받아서 처리했을떄의 시간을 기록하는 옵션 ( msec 단위로 기록 )

flags :   0일때 -> 오직 시간만 기록

           1일떄  -> 주소와 시간을 기록

           3일떄  -> 옵션에서 주소가 발견되면 시간을 기록 

-> 1 datagram 마다 사용을 해야하기 떄문에 라우터에게 너무 큰 부담을 주기에 잘사용하지않는다 .

 

Checksum 

헤더의 비트오류를 체크하기 위해서 만들어놓은 비트 

0 : 비트오류 X / 0이아닌값 : 비트오류 

 

- ARP 

 IP-to-MACaddress mapping을 사용: IP-toMAC :내가 알고싶은 IP를 사용하는 device의 MAC주소를 알고자할떄 사용 

-> IP 와 MAC주소에 대한 address mapping을 담당하는 프로토콜이다. 

= 타겟의 ip주소를 알고있을떄, 타겟ip에 mapping 되는 mac주소를 알고자할떄

 

- ARP 계층상위치가 2.5 ( Network layer)인 이유 : ip datagram생성-> frame으로 incapsulation하기전에 arp 프로토콜을 호출 ->  layer3작업 후 layer2작업전에 arp가 돌아가기떄문이다. 

 

- ARP Protocol이 사용되는 4가지 환경 

1 -> sender와 target(타겟)이 동일 네트워크에 존재할떄  (sender -> target)

2 -> sender가 호스트이고, 다른 네트워크로 타겟을 잡을때 (sender -> router1)

3 -> sender가 router(라우터) 일떄   (router1 -> router2) -> Next router(2)를 만들어서 포워딩 진행 

4 -> sender가 router(라우터)이며, target(타겟)과 동일 네트워크에 존재할떄 (router2 -> target)

--> 최종 : target Node의 MAC주소를 정확하게 gathering . 

 

자신의 네트워크와 동일하지 않은 타겟을 위해 라우터정보가 기록됨 (mapping table안에 기록) 

-> 내가 다른 네트워크에 통신을 하려하면 현재 나의 mac주소가 시스템에 기록됨 

 

- sender와 target(타겟) node가 동일 네트워크에 존재하는지 알수있는 방법

  본인의 Network prefix값 = ip packet의 목적지 Network prefix   -> 동일 네트워크. 

  본인의 Network prefix값 != ip packet의 목적지 Network prefix   -> 동일x 네트워크. 

 

 

- ARP 프로토콜 진행 순서

패킷생성->  패킷헤더를 보면 수신자의 목적지ip주소와 소스ip주소 획득 -> 연관된 physical주소를 mapping 테이블에 lookup을 하여 mac주소를 획득 -> address mapping 테이블을 업데이트 -> 그 정보를 datalink로 전달 

ARP Packet 구조

ARP Packet 

- Hardware type(하드웨어 타입) : Ethernet : 1

- Protocol type(프로토콜 타입) : IPv4 : 0800 16 

- Hardware length(하드웨어 길이) : physical length의 주소

- Protocol length(프로토콜 길이) : IP주소의 길이

- Operation : request(1) . reply(2)

 

ARP Packet  -> 'IP datagram에 캡슐화'

 

 

ARP Operation 의 과정

1. sender가 목적의 ip주소를 알아야함 

2. arp 를 호출 (request ) 

3. arp request를 만들기위해 목적의 ip주소를 가져옴 -> data link layer로 넘김 

4. source(자신) , destination(수신자) 의 주소 

5. arp request를 broadcast -> 모든 노드가 수신 -> arp request니까 arp 프로토콜 호출 , 실행 

-> 정보x(응답x)시 폐기 , 자신의 mac주소에 대응(동일)하는 목적지 주소에 arp request 를 처리 ->arp reply 메세지 생성

-> unicast로 return  -> ~~ -> 프레임이 encapsulation이 되도록 해줌 

 

<두가지 mapping 방식이 존재>

- Static mapping (정적 매핑)

-> 정적으로 저장, 각각의 device에서 전부 저장 : 사용자의 ip주소(네트워크상의 identifier)를 알게됨 

   단점 : 인구가 많은경우에는 오버헤드가 매우 심하다. 

 

- Dynamic mapping (동적 매핑)

-> 동적으로 저장, (실시간으로) : 위의 동적 ,오버헤드에 대한 해결책 -> 필요할떄만 사용 

-> 마찬가지로 통신하고자 하는 상대방의 ip주소를 알게됨 / ARP 프로토콜 사용 / RARP 프로토콜 (현재사용 x)

RARP 프로토콜을 안쓰는이유 : ip주소가 글로벌 스탠다드가 됐기때문에, 기본으로 mac주소를 쓰지않아서.  

ARP프로토콜이 필요한 이유 : 해당하는 device에 보낼떄마다 필수적이다. ip에 대한 mac주소에 대한 mapping을 알아야함. -> packet을만들고 destination , source 주소가 들어가는데 frame header밖에 못만든다. -> arp 프로토콜 필요 

-> arp를 통해서 목적지의 mac주소를 획득할수있기때문이다. (기능적으로 심플) 

 

 [ ARP프로토콜의 시작 : 전송하려는 IP datagram의 packet , 수신자의 ip주소를 알고있을떄 시작 ]

frame으로 만드려면 반드시 사용자의 source MAC 과 수신자의 MAC주소( Physical address)를 알아야한다. 

 

- Logical address ( == IP address )

-> 라우팅과 포워딩을 위해 사용 / globally 사용 / 32bit의 주소길이 / 식별자로서의 역할 / 네트워크 디바이스들이 ㅅ로의 식별자가 되는 역할을 하게해줌.  

- Physical address ( ==MAC address )

-> one hop  / device -device / hardware에 implement / 48 bits


Example 8.1 

sender와 target이 동일 네트워크에 있다는것을 아는 방법 : 32bit의 IPv4 프로토콜 / ethernet / ~ 등 네트워ㅓ크 환경 이 동일 

 

Proxy ARP 

-> 장점 : 내가  request를 보냈을떄  reply가 빠름 

-> 자신의 arp address mapping table을 보고 관련된 정보가 있는 node가 대신해서 보내주는것

--> 잘안쓰임 

 

 

- ICMP 

IP Protocol이 error-reporting 에 대한 기능을 가지고있지않기에, 이를 보완하기위해 만들어짐

 -> 에러상황 발생시 : original sender에 전송 ( 데이터를 최초로 발생시킨 부분으로 )

 -> 3.5 layer 에 존재 : incapsulation 해서 network layer로 내려갈떄 ip header가 붙기전에 transport layer에는 port num 과 ip address 주소가 있어야 가능한데 그 사이에서 icmp가 port num과 ip address를 같이 가져오기떄문 

ICMP는 IP헤더 앞에 따로 자신의 헤더를 붙인다. 4계층에는 속하지 않지만 3계층 프로토콜의 역할을 도우면서 헤더를 붙일 수 있기 때문에 3.5 계층 정도로 취급하는 것이다. ICMP의 가장 대표적인 예시로 ping과 trace route이 있다.

 

ICMP Packet의 구성Message Format

8 byte 헤더 & data section이 변환적이다. 

 

Error Message 

- Destination unreachable 

- Source quench : 소스노드에게 전송량을 낮추어달라고 하는것 ( =freeze) -> [ sender쪽에 slow-down 요구 ]

  -> 수정 x / 정보전달만 -> 병목현상이 발생  ( 연구소나 테스트목적으로 주로쓰임 ) (traffic control)

- Time exceeded :  TTL값이 0 이될경우 : 라우팅정보 오류, ~~ 등의 이유로 루프(LOOP)가 걸린경우 .

                          final이 fragment 필요 or 에러현상발생한 경우. -> 폐기후 알림 

                           라우터에서 : code 0 / 목적지노드에서 : code 1 

- Parameter problems : 헤더(header)에서의 오류  / pointer : 헤더내에서 오류위치를 표시하기위해 추가 -> 옵션 노드인경우 pointer 사용 x -> 그냥 0( null) 값

- Redirection (권고) : routing table을 업데이트  type : 5 / code 0-3 / IP address of the target router 

 

Redirection attack : 모든 트래픽이 한곳으로 몰리게 -> 공격자는 바로 자신이 라우터 b라고 host a를 속이는 일을 해야합니다. 그것이 바로 icmp 리다이렉트 공격입니다. 공격이 성공하였다면 이제 host a는 특정 외부 사이트에 대해서는 무조건 라우터 b를 통해서 갈 것이고 그 라우터 b는 바로 공격자가 됩니다.

 

어디서 에러가 발생하는지 알기위해 -> session identifier 필요 : source와 destination의 IP주소 / PORT넘버 *

TCP Segment =>

IP header -뒤에 transport hearder 따라옴( 이안에*) : 이를 통해 수신된 에러메세지가 어떤 세션과 연관이 있는지 구분이 가능하다. 

 

왜 8byte의 정보(데이터)가 들어가는지 ? -> port넘버와 sequence넘버가 Header안에 들어가게된다. 

 

국내에서 ICMP를 차단하는이유  -> ICMP 가 공격으로 사용되는 사례가 많아서 

 

Query Message :

네트워크 상황에 분석을 하기위한 용도로 발생시킴 .

- Echo request & reply : 두개의 pair로 구성됨 : host. router 모두 전송가능   < ping . >

- Timestamp request & reply : 왕복하는 전송시간값 출력  -> 네트워크의 상태,시간값 수정가능 

 -> 두 기기의 시간을 동기화 해줌 / 32bit 값을 가지고있음 

타임스탬프 Round-trip 계산법 

Original timestamp field : echo request가 출발할떄 시간값 

Recieve timestamp field : 초기값이 0이고 리시버가 echo를 받았을떄 시간값

transmit timestamp field : 내부적으로 처리후 timestamp reply를 보낼때의 시간값 

 

 

Transport layer -> TCP / UDP 

 

TCP 와 UDP 의 가장 큰 차이점 

TCP : Connection oriented , reliable(신뢰성) delivery  -> numbering system ( udp는없음) 

UDP : Connectionless , unreliable  -> sequence num, ack 없음 ( 동작간단, 심플 ) -> 속도가 빠름 ( 유용성이높음 -> 이거 하나떄문에 조금 사용  )  / 신뢰성있는 데이터 전송이 어려움 / checksum 만을 제공 이외에 에러체크하는 기능이 없음 

-> tcp 프로토콜이 너무 헤비 하니까 가벼워서 사용하는것이 그나마 이유 

  udp 제공 -> port num / application process id 

 

TCP : numbering system

/ Flow Control : 전송량 제어 

/ Error Control : segment 손실-> 재전송 : 신뢰성 있는 전송 

/ Congestion Control : 혼잡상황 -> 전송량 조절 

 

Numbering System 구조 :  TCP 에서는 ACK 1을 받았으면 1을 다시 보내줘야할것같지만, 2를 보내줌. (next byte값) 

--> ack number의 값은 그 다음 byte의 tcp 시작값과 같다 : 1일경우 2를 보내줌

 

 

Segment : 기존의 메세지 앞에 TCP header를 붙힌것

 

-three way handshake

 

 

728x90