57
HANNAM Univ. HANNAM Univ. HANNAM Univ. HANNAM Univ. 김 김 김 김 김 김 [email protected] [email protected] 2 2 TCP/IP TCP/IP 김김김김김 김김김김김 김김김 김김 김김김 김김 기기기기 기기기 기기기기 기기기 TCP/IP TCP/IP 기기기기 기기기기 ...... ......

제 2 장 TCP/IP 프로토콜과 헤더의 구조

  • Upload
    lamya

  • View
    196

  • Download
    0

Embed Size (px)

DESCRIPTION

기초부터 배우는 TCP/IP 네트워크 . 제 2 장 TCP/IP 프로토콜과 헤더의 구조. 김 지 현 [email protected]. 목차. DNS IP Address 프로토콜 헤더와 구조체 IP 헤더 메모리의 정렬 바이트 오더 Ethernet MAC Address ARP IP 경로 MTU 탐색 ICMP UDP TCP Q & A. DNS. DNS(Domain Name System) 영문으로 구성되는 도메인 이름을 IP Address 로 변환하기 위해 필요 - PowerPoint PPT Presentation

Citation preview

Page 1: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

김 지 현김 지 현[email protected]@netwk.hannam.ac.kr

제제 22 장 장 TCP/IP TCP/IP 프로토콜과프로토콜과 헤더의 구조 헤더의 구조기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워네트워크크 ............

Page 2: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

2

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

목차목차 DNS IP Address 프로토콜 헤더와 구조체 IP 헤더 메모리의 정렬 바이트 오더 Ethernet MAC Address ARP IP 경로 MTU 탐색 ICMP UDP TCP Q & A

Page 3: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

3

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

DNSDNS DNS(Domain Name System)

■ 영문으로 구성되는 도메인 이름을 IP Address 로 변환하기 위해 필요■ 도메인 이름과 그에 대응되는 IP Address 가 저장된 테이블을 가지고 있음■ IP Address 로의 변환 요청이 발생하면 테이블을 검색하여 변환

도메인 이름 + IP 주소

<< 애플리케이션 >>도메인 이름

IP(Internet Protocol)IP Address 로 변환 요청

테이블을 통한 검색

Page 4: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

4

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IP IP 주소주소 주소의 클래스

■ 이진 표기법으로 클래스 찾기

If 첫번째 비트 = 0 then Class AElse if 두번째 비트 = 0 then Class BElse if 세번째 비트 = 0 then Class cElse if 네번째 비트 = 0 then Class dElse Class E

■ 십진 표기법으로 클래스 찾기

Page 5: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

5

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

프로토콜 헤더와 구조체프로토콜 헤더와 구조체 패킷 포맷

■ Ethernet 헤더 트레일러1. 종착점 MAC 어드레스 6 옥텟2. 시작점 MAC 어드레스 6 옥텟3. 타입 2 옥텟4. FCS 4 옥텟

■ IP 헤더1. 버전 4 비트2. 헤더 길이 4 비트3. 서비스 타입 1 옥텟4. 패킷 길이 2 옥텟5. 식별자 2 옥텟6. 플래그 3 비트7. 프래그먼트 오프셋 13 비트8. 생존 기간 1 옥텟9. 프로토콜 번호 1 옥텟10.헤더 체크섬 2 옥텟11.시작점 IP 어드레스 4 옥텟12.종착점 IP 어드레스 4 옥텟

1 2 3 1 2 3 4 5 6 7 8 9 10

11

12

1 2 3 4 5 6 7 8 9 10

4DATA

■ TCP 헤더1. 시작점 포트 번호 2 옥텟2. 종착점 포트 번호 2 옥텟3. 시퀀스 번호 4 옥텟4. 확인 응답 번호 4 옥텟5. 오프셋 8 비트6. 예약 ( 미사용 ) 6 비트7. 컨트롤 플래그 6 비트8. 윈도 사이즈 2 옥텟9. 체크섬 2 옥텟10.긴급 포인터 2 옥텟

IP 헤더 TCP 헤더Ethernet 헤더

Page 6: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

6

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IP IP 헤더헤더 메모리 상의 배치

Page 7: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

7

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IP IP 헤더헤더 구조체 사용 이유

■ 길이가 다른 필드가 섞여 있어도 , 하나의 데이터 덩어리로 관리 가능■ 각각의 필드 크기에 맞춰서 적절한 형태의 변수로 선언■ char 형 외에는 변수의 바이트수가 정해져있지 않음

1 옥텟보다 작은 값을 다룰 경우■ 비트 필드나 마스크 처리가 이용■ 비트 필드는 구조체의 멤버만 사용 가능■ 비트 필드의 총 길이에 따라 바이트 길이를 적절하게 준비

▶ 8 비트 이하 : 1 바이트▶ 16 비트 이하 : 2 바이트

Structure ip{u_int ip_v:4, /* version */

u_hl:4 /* header length */}

버전 , 헤더 길이 : 각각 4bit

Page 8: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

8

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IP IP 헤더헤더 마스크 처리

■ IP 의 프래그먼트 오프셋 등에서 사용

Struct ip{u_short ip_off; /* fragment offset field*/

}

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Ip_off

예약 플래그

분할 금지 플래그모어 프래그먼트 플래그

프래그먼트 오프셋#define IP_RF 0x8000#define IP_DF 0x4000#define IP_MF 0x2000#define IP_OFFMASK 0x1fff

Page 9: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

9

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IP IP 헤더헤더0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

■ 이진수로 나타낸 마스크Ip_off

IP_RF 0x8000

IP_DF 0x4000

IP_MF 0x2000

IP_OFFMASK 0x1fff

ip_off 의 값을 Set : ip_off = ip_off | IP_DF; /* set */ip_off 의 값을 Clear : ip_off = ip_off & (~IP_DF); /* clear */Ip_off 의 2 번째 비트가 1 일 때에만 특정 처리가 필요한 경우

if (ip_off & IP_DF){처리내용}

Page 10: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

10

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IP IP 헤더헤더 배열에 의한 헤더의 처리

■ 필드의 길이와 맞는 형태가 없을 경우 사용■ 배열을 대입 또는 비교하는 연산자가 없으며 아래와 같은 함수를 호출하여 처리

#include <string.h>Void *memset(void *s, int c, size_t n);Void *memcpy(void *dest, const void *src, size_t n);Void *memmove(void *dest, const void *src, size_t n);Int memcmp(const void *s1, const void *s2, size_t n);

• memset : 어드레스 s 에서 c 바이트의 영역을 n 으로 채움• memcpy , memmove : 어드레스 src 에서 n 바이트의 영역을 어드레스 dest 에서 시작하는 영역에 복사• memcmp : 어드레스 s1 과 어드레스 s2 의 각각의 영역 선두에서 n 바이트의 영역을 1 바이트씩 비교

비교결과 같은 경우 : 0 반환 s1 이 큰 경우 : - 값 반환

s2 가 큰 경우 : + 값 반환

Page 11: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

11

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

메모리의 정렬메모리의 정렬 메모리의 정렬

■ 구조체 멤버를 메모리에 배치할 때에 짝수 어드레스나 4 의 배수 어드레스에서부터 시작되도록 정렬하는 것Struct align_test{

char a;char b;int c;

} align_test;

Char a;

Char b;

Int c;

Char a;Char b;

Int c;

미사용 미사용

정렬되지 않은 경우 정렬된 경우1000100110021003

10051004

1000100110021003

10051004

10061007

Page 12: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

12

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

바이트 오더바이트 오더 바이트 오더

■ 2 바이트 이상의 데이터를 메모리에 저장하는 방법의 차이■ 빅 엔디언과 리틀 엔디언의 2 개의 바이트 오더가 사용

Page 13: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

13

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

바이트 오더바이트 오더 빅 엔디언

■ 데이터 값의 최상위 비트가 어드레스의 선두에 오도록 저장

리틀 엔디언■ 데이터 값의 최상위 비트가 어드레스의 제일 후미에 오도록 저장

네트워크 속을 흐르는 패킷■ 빅 엔디언과 똑같이 상위 비트를 선두에 배치하는 순서■ 네트워크 바이트 오더라고 함

문제점■ 빅 엔디언과 리틀 엔디언의 저장 방식의 차이에 의한 문제점■ 어떤 바이트 오더이건 상관없이 변환할 수 있는 함수가 요구

Page 14: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

14

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

바이트 오더바이트 오더 바이트 오더 변환 함수

비트 단위로 처리될 경우

IP 나 TCP 의 헤더등 TCP/IP 프로토콜의 헤더는 모두 네트워크 바이트 오더에 저장

#include <netinet/in.h>

u_long int htonl(u_long int hostlong);

u_short int htons(u_short int hostshort);

u_long int ntohl(u_long int netlong);

u_short int ntohs(u_short int netshort);

#if BYTE_ORDER == LITTLE_ENDIANu_int ip_hl : 4 ; /* header length */

ip_v : 4 ; /* version */#endif#if BYTE_ORDER == BIG_ENDIAN

u_int ip_v : 4 ; /* version */ip_hl : 4 ; /* header length */

#endif

Page 15: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

15

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

EthernetEthernet Ethernet

■ 브로드캐스트형 네트워크▶ 네트워크에 접속되어 있는 모든 호스트에 패킷을 전달하는 방식

■ LAN : 특정 영역 내의 네트워크 ≠ Ethernet : 소규모 네트워크 구성■ Ethernet 세그먼트 : 각각의 Ethernet 범위■ NIC 의 ROM 에는 6 옥텟 (: 으로 구분 ) 의 MAC 어드레스가 기입■ MAC 어드레스는 모든 NIC 를 통틀어 중복되지 않게 관리

Page 16: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

16

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

EthernetEthernet Ethernet 의 프레임 포맷과 구조체의 정의

Ethernet 헤더 구조체종착점 MAC 어드레스

(6 옥텟 )시작점 MAC 어드레스

(6 옥텟 )타입

(2 옥텟 )데이터

(46 ~ 1500 옥텟 )FCS

(4 옥텟 )

프레임이 흘러가는 방향

Struct ether_header{u_char ether_dhost[ETHER_ADDR_LEN];u_char ether_shost[ETHER_ADDR_LEN];u_short ether_type;

};

Page 17: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

17

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

EthernetEthernet Ethernet 의 기본 동작

■ 데이터의 송신전에 다른 호스트의 데이터 송신 여부를 체크■ 송신 데이터의 충돌시 난수시간을 대기후 재전송■ CSMA/CD

▶ Carrier Sense Multiple Access with Collision Detection▶ 여러 개의 호스트에서 같은 신호선을 공유해서 프레임을 송신하고 ,충돌을 검출하고 , 송신을 제어하는 것

■ 라우터를 건너뛸 수 없음■ 라우터에서 격리된 호스트와 통신하기 위해서는 IP 프로토콜을 이용

Page 18: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

18

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

MAC AddressMAC Address MAC 어드레스와 비트의 순번

■ 호스트 내부에서 관리할때와 네트워크 안을 흐를때의 MAC 어드레스가 다름■ Ethernet 이 처음 개발된 VAX 의 아키텍쳐의 영향

Page 19: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

19

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ARPARP ARP(Address Resolution Protocol)

■ Ethernet 이나 토큰링 등의 브로드캐스트형 데이터 링크에 사용되는 프로토콜

■ IP 어드레스를 검색하는 MAC 어드레스를 검색할때 사용

■ 하드웨어 어드레스 : 검색할 어드레스 (MAC 어드레스 )

■ 프로토콜 어드레스 : 검색할 어드레스의 근원이 되는 어드레스 (IP 어드레스 )

■ 어드레스의 길이는 가변으로 다루어 짐

Page 20: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

20

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ARPARP ARP 의 패킷 포맷

■ Arp_hrd : 하드웨어 어드레스의 종류를 나타냄▶ #define ARPHRD_ETHER 1

■ Arp_pro : 프로토콜의 종류를 나타냄▶ Ethernet 의 타입 필드에 넣어지는 값과 같은 값이 저장

■ Arp_hln : 하드웨어 어드레스의 길이를 나타냄▶ Ethernet 은 MAC 어드레스의 길이가 6 이므로 ,6 이 저장됨

■ arp_op : ARP 가 어떤 처리를 요구하고 있는지를 나타냄▶ arp 의 요구 :1 arp 의 응답 : 2▶ ARPOP_REQUEST,ARPOP_REPLY 라고 정의되어 있음

struct arphdr{u_short ar_hrd;u_short ar_pro;u_char ar_hln;u_char ar_pln;u_short ar_op;

};struct ether_arp{

struct arphdr ea_hdr;u_char arp_sha[ETHER_ADDR_LEN];u_char arp_spa[4];u_char arp_tha[ETHER_ADDR_LEN];u_char arp_tpa[4];};

Page 21: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

21

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ARPARP ARP 패킷 포맷

Page 22: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

22

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ARPARP ARP 프로토콜의 동작

• ARP 프로토콜을 이용하여 알아낸 정보는 ARP 테이블에 기억

• ARP 테이블은 캐쉬로 저장

Page 23: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

23

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP IP

■ 목적 호스트까지 패킷을 보내는 역할■ IP 헤더를 해석하여 패킷의 송 / 수신을 처리■ 모든 호스트나 라우터에 IP 어드레스가 부여■ IP Forward : 다른 호스트에 대한 IP 데이터그램을 수신한 경우 IP 데이터그램을

전송하는 것

식별자Identification

ip_id

패킷의 길이total length

ip_len

헤더 체크섬Header Checksum

ip_sum시작점 IP 어드레스Source IP Address

ip_src

프래그먼트 오프셋Fragment Offset

ip_off

플래그Flag

서비스 타입Type Of Service

ip_tos

헤더의 길이Header Length

ip_hl

버전Version

ip_v

프로토콜 번호protocol

ip_p

재생 시간Time to Live

ip_ttl

종착점 IP 어드레스Destination IP Address

ip_dst

IP 헤더의 구조

0 4 8 16 19 31

Page 24: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

24

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP IP 헤더의 구조

헤더 길이 (ip_hl) ■ IP 헤더의 길이를 나타냄■ 4 옥텟 단위로 계산되므로 ,5 값이 저장됨■ C 언어로 처리시 4 배 또는 ¼ 로 처리■ 시프트 (>> or <<) 연산을 통한 처리

Struct ip{#if BYTE_ORDER == LITTLE_ENDIAN

u_int ip_hl : 4, /* header length */ ip_v : 4 ; /* version */

#endif#if BYTE_ORDER == BIG_ENDIAN

u_int ip_v : 4, /* version */ ip_hl : 4; /* header length*/

#endif u_char ip_tos; /* type of service */

u_short ip_len; /* total length */ u_short ip_id; /* identification */

u_short ip_off; /* fragment offset field */ u_char ip_ttl; /* time to live */ u_char ip_p; /* protocol */ u_short ip_sum; /* checksum */ struct in_addr ip_src; /* source address */ struct in_addr ip_dst; /* dest address */

IP 구조체

Page 25: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

25

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP 서비스 타입 (ip_tos)

■ IP 데이터그램을 배송할 때의 서비스 품질을 라우터에게 지시하기 위해 사용■ 8 bit

0 0 0 0 0 0 0 0

우선도 서비스 타입 미사용

낮은 비용

높은 신뢰성

높은 처리량

낮은 지연 시간

111110101100011010001000

높은 우선도

낮은 우선도

Page 26: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

26

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP 패킷의 길이

■ IP 데이터그램의 전체의 길이■ 16 비트 (0~65535)■ IP 가 운반하는 최대의 데이터 = 65535 – 20 = 65515 옥텟

식별자■ IP 프래그먼트 처리에 사용■ 16 비트의 길이■ 전원 주입시 식별자 초기값이 결정■ IP 데이터그램을 1 개 송신하면 식별자 값이 1 씩 더해짐

Page 27: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

27

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP 플래그와 프래그먼트 오프셋

RF(Reserved Fragment) : 예약 플래그■ 0 번 비트로 0 을 포함하도록 정해져 있음

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

예약 플래그분할 금지 플래그

모어 프래그먼트 플래그

프래그먼트 오프셋

플래그 ,프래그먼트 오프셋 ip_off필드

0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

IP_RF 0x8000

IP_DF 0x4000

IP_MF 0x2000

IP_OFFMASK 0x1fff

Page 28: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

28

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP DF(Don’t Fragment) : 프래그먼트 금지 플래그

■ 도중의 라우터에서 프래그먼트해서 좋은가 어떤가를 지시■ 0 : 프래그먼트 가능 1: 프래그먼트 금지

MF(More Fragments) : 추가 프래그먼트 플래그■ 이동하는 데이터가 프래그먼트 도중인가 마지막인가를 나타냄■ 0: 마지막 프래그먼트 (또는 프래그먼트하지 않음 )■ 1: 도중의 프래그먼트 ( 후속 프래그먼트가 존재 )

프래그먼트 오프셋■ 13 비트크기의 필드■ 프래그먼트된 데이터가 오리지널 IP 데이터그램의 위치를 의미

재생 시간 (ip_ttl)■ IP 데이터그램이 통과할 수 있는 라우터의 개수■ 라우터를 통과할 때마다 값이 1 씩 감소■ 0 이 되면 IP 데이타그램은 폐기

Page 29: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

29

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP 프로토콜 번호 (ip_p)

■ 상위 층의 프로토콜에 대해 나타냄

헤더 체크섬 (ip_sum)■ 16 비트의 크기로 IP 헤더의 체크섬을 나타냄■ IP 헤더가 파손되지 않는 것을 보증하기 위한 것

번호 프로토콜 이름 설명1 ICMP Internet Control Message Protocol2 IGMP Internet Group Management Protocol4 IP IP in IP(encapsulation)

6 TCP Transmission Control Protocol8 EGP Exterior Gateway Protocol

17 UDP User Datagram Protocol41 IPv6 IPv646 RSVP Resource ReSerVation Protocol

89 OSPF Open Shortest Path Firtst

Page 30: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

30

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP 라우팅

■ IP 데이터그램을 목적 호스트까지 보내기 위해서 경로를 선택하는 것

Page 31: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

31

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP IP 프래그먼트

■ 전송이 가능한 최대 프레임의 크기는 데이터 링크로 정해져 있음■ MTU(Maximum Transmission Unit)■ Ethernet:1500 옥텟■ FDDI: 4352 옥텟■ IP over ATM : 9180 옥텟■ 데이터 링크보다 큰 IP 데이터그램의 전송은 불가능■ 통신하는 호스트간 서로 다른 데이터 링크로 인해 MTU 가 줄어드는 경우 도중에

라우터에서 IP 데이터그램을 분할■ 프래그먼트된 IP 데이타그램은 종착점 호스트에서 리어셈블 처리되어 원래의 IP

데이터그램으로 복원■ IP 데이타그램이 복원 가능한 경우만 상위계층으로 페이로드를 전달

Page 32: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

32

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP IP 프래그먼트

■ 식별자 (ID) : 시쟉점 호스트에서 번호가 붙여져 종착점 호스트에 도착할 때까지 그 값이 변하지 않음

■ IP 프래그먼트

Page 33: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

33

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

IPIP 프래그먼트의 문제점

■ 라우터의 부하 상승▶ 라우터의 성능에 따라 통신 성능에 큰 영향을 미침▶ 도중의 프래그먼트는 라우터의 부하를 가중▶ 도중의 프래그먼트는 가능하더라도 하지 않는 편이 좋음

■ 프래그먼트된 IP 데이터그램을 상실했을 때의 전송 효율 저하▶ 다수의 프래그먼트 조각중 하나만 상실하면 모든 프래그먼트를 삭제▶ IP 네트워크는 30 초동안 버퍼에 프래그먼트 조각들을 저장▶ 30초 후에 모든 프래그먼트가 도착지 않으면 모든 프래그먼트를 삭제

해결 방안■ 가능한 도중 프래그먼트의 발생을 없애기 위해 미리 분할■ TCP 의 전송 효율의 저하 문제가 발생■ 더 나은 방법을 위해 경로 MTU 탐색을 이용

Page 34: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

34

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

경로 경로 MTU MTU 탐색탐색 경로 MTU 탐색

■ 통신 경로상의 최소 MTU 를 검색하여 그 크기 이하가 되도록 사전에 미리 송신 호스트에서 IP 데이터그램을 구분해서 송신

Page 35: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

35

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP ICMP(Internet Control Message Protocol)

■ IP 의 기능을 보조하기 위한 프로토콜▶ IP 데이터그램의 배송 중에 에러가 발생한 것을 시작점 호스트에 통지▶ 비효율적인 라우팅을 행하고 있을 때 라우팅 테이블을 변경하기 위해 사용

■ 복수의 형식■ ICMP 헤더는 공용체 ( 하나의 메모리 공간을 공유 ) 로 정의

#define 되어 있는 문자 코드 의미ICMP_ECHOREPLY 0 에코 응답ICMP_UNREACH 3 종착점 도달 불능

ICMP_SOURCEQUENCH 4 시작점 억제ICMP_REDIRECT 5 리다이렉트

ICMP_ECHO 8 에코 요구ICMP_TIMXCEED 11 시간 초과

ICMP_PARAMPROB 12 파라미터 에러

Page 36: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

36

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP ICMP 에코 요구 , 에코 응답

■ Ping 명령어로 이용■ 통신하고 싶은 호스트에 ICMP 에코 요구를 보내고 , 그 호스트에 ICMP 에코 요구가 도착한 경우 ICMP 응답이 보내져 옴

타입Type

Icmp_type

코드Code

Icmp_code

체크섬Checksum

Icmp_cksum

식별자Identification

Icmp_id

시퀀스 번호Sequence Number

Icmp_seq

데이터Icmp_data

0 8 16 31

<< 패킷 형식 >>

Struct icmp{u_char icmp_type;u_char icmp_code;u_short icmp_cksum;u_short icmp_id;u_short icmp_seq;char icmp_data[1];

};

<< 패킷의 구조체 >>

타입- 8: 에코 요구 0: 에코 응답

코드- 0 이 포함

식별자- 복수의 ping 명령어를 같은 컴퓨터상에서 실행할 때

각각의 송신 패킷과 응답을 식별하는 것

시퀀스 번호- 몇번째에 icmp 패킷을 보냈는가를 번호로 기입- 패킷의 손실 여부 확인을 위해 사용

데이터- 에코 응답으로 에코 요구부분이 돌아옴- 패킷의 왕복시간을 알수 있음

Page 37: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

37

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP ICMP 도달 불능

■ 어떤 원인으로 인해 ip 데이터그램이 목표 호스트까지 도달할 수 없는 경우

타입Type

Icmp_type

코드Code

Icmp_code

체크섬Checksum

Icmp_cksum

미사용

Icmp_pmvoid

다움의 MTUNext MTU

Icmp_nextmut

데이터Icmp_data

0 8 16 31

<< 패킷 형식 >>

Struct icmp{u_char icmp_type;u_char icmp_code;u_short icmp_cksum;u_short icmp_pmvoid;u_short icmp_nextmtu;char icmp_data[1];

};

<< 패킷의 구조체 >>

Page 38: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

38

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP■ 코드

■ 체크섬▶ ICMP 헤더와 데이터가 정확하다는 것을 보증

■ 포인터 : 사용 하지 않음■ MTU 필드

▶ 코드 4 로만 이용▶ MTU 탐색에서 이용되어 다음 데이터 링크의 MTU 값이 포함

■ 데이터▶ 에러를 발생시켜 IP 데이터그램의 IP 헤더와 이어 8 바이트의 데이터가 포함

#define 되어 있는 문자 코드 의미ICMP_UNREACH_NET 0 네트워크 도달 불능ICMP_UNREACH_HOST 1 호스트 도달 불능ICMP_UNREACH_PROTOCOL 2 프로토콜 도달 불능ICMP_UNREACH_PORT 3 포트 도달 불능ICMP_UNREACH_NEEDFRAG 4 프래그먼트가 필요하거나 DF 가 세트되어 있다 .ICMP_UNREACH_SRCFAIL 5 소스 라우팅 실패

Page 39: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

39

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP ICMP 도달 불능

Page 40: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

40

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP ICMP 리다이렉트

■ 라우팅 테이블을 강제적으로 수정하기 위해 송신

타입Type

Icmp_type

코드Code

Icmp_code

체크섬Checksum

Icmp_cksum

라우터의 IP 어드레서Gateway Internet Address

Icmp_gwaddr

데이터(ip 헤더와 거기에 이어지는 64 비트 )

Icmp_data

<< 패킷 형식 >>

Struct icmp{u_char icmp_type;u_char icmp_code;u_short icmp_cksum;struct in_addr icmp_gwaddrchar icmp_data[1];

};

<< 패킷의 구조체 >>

Page 41: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

41

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP 타입 : 5 코드

체크섬■ ICMP 의 헤더와 데이터가 정확하다는 것을 보증

라우터의 IP 어드레스■ 라우팅 테이블의 전송처에 기술하는 IP 어드레스가 포함

데이터■ 리다이렉트가 필요하다고 생각되는 IP 데이터그램의 IP 헤더와 그 뒤 8

바이트의 데이터가 포함

#define 되어 있는 문자 코드 의미ICMP_UNREACH_NET 0 네트워크 도달 불능ICMP_UNREACH_HOST 1 호스트 도달 불능ICMP_UNREACH_PROTOCOL 2 프로토콜 도달 불능ICMP_UNREACH_PORT 3 포트 도달 불능ICMP_UNREACH_NEEDFRAG 4 프래그먼트가 필요하거나 DF 가 세트되어 있다 .ICMP_UNREACH_SRCFAIL 5 소스 라우팅 실패

Page 42: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

42

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP ICMP 리다이렉트

Page 43: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

43

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP ICMP 시간 초과 메시지

■ IP 헤더의 TTL 의 값이 0 이 되었을 때 또는 프래그먼트화된 패킷을 리어셈블하지 못하고 폐기할때 전송

타입Type

Icmp_type

코드Code

Icmp_code

체크섬Checksum

Icmp_cksum

미사용Icmp_void

데이터(ip 헤더와 거기에 이어지는 64 비트 )

Icmp_data

<< 패킷 형식 >>

Struct icmp{u_char icmp_type;u_char icmp_code;u_short icmp_cksum;n_int icmp_void;char icmp_data[1];

};

<< 패킷의 구조체 >>

Page 44: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

44

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP 타입 : 11 코드

■ 0 : TTL 이 0 으로 된 데이터그램을 폐기하는 것■ 1 : 프래그먼트의 리어셈블이 타임아웃해서 데이터그램이 폐기되는 것

IP 데이터그램이 폐기된 것을 시작점 호스트에서 전달 체크섬

■ ICMP 의 헤더와 데이터가 바르다는 것을 보증 포인터 : 사용 안함 데이터

■ 에러를 발생시킨 IP 데이터그램의 IP 헤더와 이어진 8 바이트의 데이터

Page 45: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

45

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP 공용체와 실제의 ICMP 헤더 구조체 struct icmp{

u_char icmp_type;u_char icmp_code;u_short icmp_cksum;union{

u_char ih_pptr;

struct in addr ih_gwaddr;

struct ih_idseq{n_short icd_id;n_short icd_seq;} ih_idseq;

int ih_void;

struct ih_pmtu{n_short ipm_void;n_short ipm_nextmtu;} ih_pmtu;

struct ih_rtradv{u_char irt_num_addrs;u_char irt_wpa;u_int16_t irt_lifetime;

}ih_rtradv;}icmp_hun;

#define icmp_pptr icmp_hun.ih_pptr#define icmp_gwaddr icmp_hun.ih_gwaddr#define icmp_id icmp_hun.ih_idseq.icd_id#define icmp_seq icmp_hun.ih_idseq.icd_seq#define icmp_void icmp_hun.ih_void#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime

공용체를 이용하면 멤버를 찾게 되고 프로그램중에 피리어드가 증가되고프로그램이 알기 어렵게 되기 때문에define 을 사용하여 멤버를 줄이도록 정의

Page 46: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

46

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

ICMPICMP

union{struct id_ts{

n_time its_otime;n_time its_rtime;n_time its_ttime;}id_ts;

struct id_ip{struct ip idi_ip;}id_ip;

struct icmp_ra_addr id_radv;u_int32_t id_mask;char id_data[1];} icmp_dun;

#define icmp_otime icmp_dun.id_ts.its_otime#define icmp_rtime icmp_dun.id_ts.its_rtime#define icmp_ttime icmp_dun.id_ts.its_ttime#define icmp_ip icmp_dun.id_ip.idi_ip#define icmp_radv icmp_dun.id_radv#define icmp_mask icmp_dun.id_mask#define icmp_data icmp_dun.id_data

공용체를 이용하면 멤버를 찾게 되고 프로그램중에 피리어드가 증가되고프로그램이 알기 어렵게 되기 때문에define 을 사용하여 멤버를 줄이도록 정의

Page 47: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

47

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

UDP(User Datagram Protocol)UDP(User Datagram Protocol) UDP

■ IP 의 기능을 그대로 애플리케이션으로 이용하기 위해 만들어진 프로토콜■ IP 포트 번호와 체크섬 기능을 추가■ 커넥션리스■ 신뢰성 없는 데이터그램형의 서비스를 제공■ 헤더

시작점 포트 번호Source PortUh_sport

종착점 포트 번호Destination Port

Uh_dport

패킷 길이LengthUh_ulen

체크섬ChecksumUh_sum

0 16 31 struct udphdr {

u_short uh_sport; /* source port */u_short uh_dport; /* destination port */u_short uh_ulen; /* udp length */u)short uh_sum; /* udp checksum */

};

<< 헤더의 포맷 >> << UDP 헤더의 구조체 >>

• 시작점 포트 번호와 종착점 포트 번호 : 각각의 포트 번호• 패킷 길이 : UDP 헤더의 길이와 데이터의 길이가 포함• 체크섬 : UDP 헤더와 데이터의 신뢰성을 제공하기 위한 필드

Page 48: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

48

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP TCP

■ IP 의 기능을 확장해 종착점 호스트 사이에 신뢰성 있는 통신을 제공■ 커넥션 지향의 프로토콜 ( 통신시 커넥션을 연결 ,통신의 종료시 커넥션을 끊음 )■ 송신 데이터의 순서 번호 제어와 그에 대한 확인 응답 제어

시작점 포트 번호Source Port

Th_sport

종착점 포트 번호Destination Port

Th_dport

시퀀스 번호Sequence Number

Th_seq

확인 응답 번호 Acknoledgement Number

Th_ack

체크섬ChecksumTh_sum

긴급 포인터Urgent Pointer

Th_urp

오프셋Data Offset

Th_off

플래그Flags

Th_flags

윈도 크기Urgent Pointer

Th_urp

TCP 세그먼틔의 길이를 나타내는 필드가 없음 IP 헤더의 패킷 길이로부터 구해지기 때문

시작점 포트 번호와 종착점 포트 번호 : 각각의 포트번호를 나타냄시퀀스 번호

통신한 데이터의 위치를 옥텟 단위로 표현확인 응답 번호

다음에 송신한 시퀀스 번호데이터 오프셋

TCP 가 이동하고 있는 데이터 헤더의 선두에서 계산되는 것이 어디서부터 시작하는지를 나타냄1단위는 4 옥텟 , 옵션이 포함되지 않을 경우 5 가 저장

플래그6 비트는 제어 플래그

윈도 사이즈데이터를 수신하는 측의 수신 버퍼의 빈영역의 크기를 알려주는데 사용

체크섬TCP 의 헤더나 데이터가 포함되어 있지 않을 것을 보증

긴급포인터제어 플래그의 URG 가 1 인 경우 유효긴급을 요하는 데이터의 보관 장소를 나타낸 포인터로 처리

Page 49: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

49

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP 제어 플래그

제어플프래그의 의미

플래그 비트가 1 일 때의 의미

URG(Urgent Flag) 이동하고 있는 데이터 중에 긴급히 처리해야 하는 것이 포함되어 있는지 아닌지를 의미긴급히 처리해야 하는 데이터는 긴급 포인터의 필드에 나타남

ACK(Acknowledgement Flag) 확인 응답 필드가 유효한 것을 의미가장 최초의 SNY 세그먼트 이외는 반드시 [1]로 되어 있음

PSH(Push Flag) 송신한 데이터를 버퍼링하지 않게 신속히 애플리케이션에 전해 주도록 지원

RST(Reset Flag) 커넥션을 강제적으로 차단하는 것을 의미

SYNC(Syncronize Flag) 커넥션 연결 요구를 의미시퀀스 번호 필드의 값을 시퀀스 번호의 초기값으로 함

FIN(Fin Flag) 커넥션 차단 요구를 의미통신의 마지막 세그먼트에 있는 것을 의미이 세그먼트 외에는 데이터 세그먼트가 전송되지 않음

Page 50: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

50

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP TCP 커넥션의 연결 및 차단

Page 51: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

51

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP TCP 에 의한 신뢰성 제공

■ TCP

Page 52: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

52

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP 버퍼 크기와 윈도우

■ 윈도우제어▶ 데이터 세그먼트의 송신시 확인 응답을 받지 않아도 연속적으로 데이터 세그먼트를 송신하는 것

■ TCP 헤더의 윈도 필드▶ 수신측 호스트가 송신측 호스트에게 연속적으로 수신할 수 있는 옥텟 사이즈를 알리는것

Page 53: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

53

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP 체크섬

■ 패킷을 네트워크에 전송하고 있는 사이 헤더나 데이터가 파손되지 않았다는 것을 보증하는데 사용

■ 각각의 프로토콜 체크섬이 보증하는 필드

체크섬이 보증하는 필드

프로토콜 보증하는 필드 체크섬을 취소할 수 있는가

IP IP 헤더만 불가능

ICMPICMP 헤더와 데이터 불가능

TCP TCP 헤더 ,TCP 의 데이터 ,TCP 의사 헤더 불가능

UDP UDP 헤더 ,UDP 의 데이터 ,UDP 의사 헤더 가능

IPv6IP 헤더에서 체크섬이 수행되지 않음

IPv4시작점 호스트나 종착점 호스트에 보내는 데이터의 최종적인 보증은 TCP 나 UDP 가 수행

Page 54: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

54

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP 의사 헤더

■ 필요성▶ TCP 나 UDP 에 의한 통신의 식별이 송수신 호스트의 IP 어드레스와 포트 번호 , 프로토콜 번호를 사용하여 수행되기 때문

시작점 IP 어드레스종착점 IP 어드레스

반드시 0 TCP 일때 6UDP 일때 17

트랜스포트 헤더를포함한 패킷의 길이

Page 55: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

55

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP 체크섬의 알고리즘

■ 데이터를 송신하는 호스트의 체크섬 계산 절차1. TCP 와 UDP 의 경우 의사 헤더를 작성2. 체크섬 필드에 0 을 입력3. 데이터의 길이가 홀수인 경우 0 으로 채워서 16 비트로 조정4. 유사 헤더 , 헤더 , 데이터 부분을 16 비트 단위로 조정할때 1 의 보수를 더함5. 구하려는 값의 1 의 보수를 헤더 체크섬의 영역에 포함

Page 56: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

56

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

기초부터 배우는 기초부터 배우는 TCP/IP TCP/IP 네트워크 실험 프로그래밍네트워크 실험 프로그래밍

TCPTCP UDP 의 경우 체크섬

Page 57: 제 2 장  TCP/IP  프로토콜과  헤더의 구조

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

Q & AQ & A

mailto://[email protected]://[email protected]

Thank you…Thank you…