Wiznetacademywiznetacademy.com/wp/wp-content/uploads/2015/03/WIZnet... · 2015. 3. 31. ·...
Transcript of Wiznetacademywiznetacademy.com/wp/wp-content/uploads/2015/03/WIZnet... · 2015. 3. 31. ·...
W5500으로
임베디드이더넷구현하기 (심화)
2015년 4월 9일
위즈네트 아카데미
Wiznetacademy.com
강사 김수환 : https://embeddist.wordpress.com/김은경 : https://socatelier.wordpress.com/
목차
• 개발환경 구축
• Ping 테스트
• TCP Server 테스트
• DHCP Client
• DNS Client
• Simple HTTP Client
2
개발환경 구축 및 테스트
• 필요사항• LPCXpresso 설치방법
• Flash Magic 설치방법
Ethernet to usb adaptor 필참(Ethernet Port 없는 PC일경우만)
• 배경지식• Socket program 기초
• Network 기초
3
참고사이트
• W5500DataSheet : wizwiki-W5500Document
• W5500-EVB : wizwiki-W5500EVB• Library and Examples : GitHub-W5500EVB
• Forum : http://wizwiki.net/forum/
4
W5500
SW TCP/IP vs Hardware TCP/IP
Software Stack
Hardware Stack
Application
Protocol Layer
6
Link Layer
Internet Layer
Transport Layer
Applicat ion Layer
Frame Data
IP
Header
Data
Frame
Header
Frame
Footer
IP Data
UDP
Header
UDP
Data
TCP
Header
TCP
Dataor
https:/ / socatelier.wordpress.com/
Hardware TCP/IP
• SPI
• Socket 8 Channel
• 32Kbyte buffer• RX buffer – 16Kbyte
• TX buffer – 16Kbyte
• Support Protocol(internal)• TCP, UDP, ICMP, IGMP,
• IPv4,ARP,PPPoE
How to use?
Read / Write
Common Register
Status Register
Network Config Register
Socket Register x 8
TX & RX Buffer
Buffer Config. Register
Buffer Status RegisterSocket Command Register
Socket Status Register
Socket Config. Register
RX
TX
Sn_CR
Sn_SR, Sn_IR
Sn_MR, Sn_DIPR, Sn_DPORT
SIR, PHYCFGR
SIPR, SHAR, GAR, SUBR
Sn_RXBUF_SIZE,Sn_TXBUF_SIZE
Sn_TX_RD,Sn_TX_WR
Socket?
• Socket 0 - TCP Server(5000)
• Socket 1 - TCP Server(5001)
• Socket 6 - UDP(3001)
• Socket 7 - TCP Client(4005)
• Socket 2/3/4/5 – Not Used
9
Socket 0
UDP
TCP Server
TCP Client
https:/ / socatelier.wordpress.com/
Socket 1
Socket 2
Socket 3
Socket 4
Socket 5
Socket 6
Socket 7
TCP Server(5000)
TCP Server(5001)
Not Used
Not Used
Not Used
Not Used
UDP(3001)
TCP Client(4005)
Ping Test를 통한 W5500 Config. 익히기
10
Ping request
Ping reply
Ping Reply Test
Common Register의 설정을 통해 Ping Reply Test를 실습한다.
실습 : EX0_w5500evb_ping
Terminal windows
Ping Success
Ping Fail
Ping이 안된다면!
• W5500의 IP 주소가 192.168.1.2 라면..• PC의 네트워크 주소가 192.168.1.xxx로 되어있는지
• PC와 W5500EVB간 LAN cable 연결 되어있는지
12
TCP/UDP Loopback Test
• 참고자료• W5500 임베디드이더넷 구현하기(입문)
• COM Port확인방법
실습 : EX1_w5500evb_demos_loopback_and_switch_blinky
13
DHCP Client
• 목표
• DHCP Client를 알자
• DHCP Discover/Offer/Response/Ack 알자
14
DHCP(Dynamic Host Configuration Protocol)란?
• DHCP서버로 셋팅된 컴퓨터는클라이언트들에게 할당할 IP Address Pool을 유지하고 있으면서 DHCP를 이용해서 IP Address발급을 요청하는 클라이언트에게 IP Address를 할당해 주게 된다.
http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
15
DHCP Server(WizFi630)
DHCP Client(W5500) https:/ / socatelier.wordpress.com/
https://www.youtube.com/watch?v=V69UAnkoYHM
16
W5500
W5500 MAC=m1
1 DHCP Discover
2 DHCP Offer
3 DHCP Request
4 DHCP Ack
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10, Client MAC=m1,Subnet Mask(1)=255.255.255.0, Router(3)=1.1.1.1,
DNS(6) = 10.1.1.1&10.1.1.2,IP Lease Time(51)=3,600s, DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1}, IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1, Requested IP Address(50)=1.1.1.10, DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10,Client MAC=m1, Subnet Mask(1)=255.255.225.0,Router(3)=1.1.1.1,
DNS(6)=10.1.1.1&10.1.1.2, IP Lease Time(51)=3,600s, DHCP Server Ident if ier(54)=1.1.1.254}
IP address=1.1.1.10 allocat ion completed
Internet AccessSIP=1.1.1.10
DHCP Server IP=1.1.1.254
DHCP Server MAC=m2
"안녕하세요? 혹시 거기 DHCP 서버님 계시면 제게 대답 좀 주세요"
"네 저 여기 있습니다. 제 IP주소는 1.1.1.254입니다.
제가 DHCP client(PC)에 IP 주소 1.1.1.10을 할당(임대)해 드릴수 있어요.
"답변 주셔서 감사해요. 그럼 1.1.1.254 주소를 가진 DHCP서버님! 저에게 IP주소를 할당(임대)해 주세요.
"네, 제가 DHCP Client(PC)를 위해 IP주소 1.1.1.10을 포함한 필요하신 네트워크 정보를 임대해 드릴께요.
임대시간은 1시간입니다."
WizFi630
DHCP Client
https:/ / socatelier.wordpress.com/
DHCP Header
OP code HW Type HW Length HOPS
Transact ion ID(xid)
Seconds Broadcast Flag(1b)
Client IP Address(ciaddr)
Your IP Address(yiaddr)
Server IP Address(siaddr)
Gateway IP Address(giaddr)
Client Hardware Address (16B)(chaddr)
Server Name(64B)(sname)
Filename(128B)
DHCP Message Type(Option 53)=1(DHCP Discover)
Client Ident ifier(Option 51)=PC MAC Address(m1)
Parameter Request List (Option 55)=Option 1,3,6,…..
0B 2B 4B
http://www.networksorcery.com/enp/protocol/dhcp.htm
17
DHCP 동작원리(1)
1) DHCP Discover(단말 -> DHCP 서버)
• 이더넷 망에 브로드캐스팅 (Destination MAC = FF:FF:FF:FF:FF:FF)하며, 동일 서브넷상에있는 모든 DHCP 서버들은 이 메시지를 수신한다.
2) DHCP Offer(DHCP 서버 -> 단말)
• 브로드캐스팅 (Destination MAC = FF:FF:FF:FF:FF:FF)하며, 네트워크 정보들(단말 IP주소, subnet mask…..)이 포함되어있다. DHCP Discover메시지를 송신한 단말을 포함한 동일서브넷 상의 모든 단말들이 수신한다.
18
DHCP 동작원리(2)
3) DHCP Request(단말 -> DHCP 서버)
• 단말 IP 주소를 포함한 네트워크 정보를 요청(브로드캐스트)
4) DHCP Ack(DHCP 서버 -> 단말)
• DHCP Request메세지를 수신한 DHCP서버는 메시지 내에 Server Identifier(54)에 기록된IP주소를 자신의 주소인지 확인 후에, 메시지를 이더넷망에 브로드캐스팅하며, DHCP offer와 같은 메시지를 보낸다.
• 대표적인 네트워크정보• IP주소
• Subnet Mask
• Default Gateway IP 주소
• DNS 서버 IP 주소
• Lease Time(DHCP 서버가 할당(임대)해 준 IP주소를 단말이 사용할 수 있는 기간)
19
20
1 DHCP Discover
2 DHCP Offer
3 DHCP Request
4 DHCP Ack
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10, Client MAC=m1,
Subnet Mask(1)=255.255.255.0, Router(3)=1.1.1.1,
DNS(6) = 10.1.1.1&10.1.1.2,IP Lease Time(51)=3,600s,
DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1, Requested IP
Address(50)=1.1.1.10, DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10,Client MAC=m1,
Subnet Mask(1)=255.255.225.0,Router(3)=1.1.1.1,
DNS(6)=10.1.1.1&10.1.1.2, IP Lease Time(51)=3,600s,
DHCP Server Ident if ier(54)=1.1.1.254}
DHCP Server IP=1.1.1.254 DHCP Server MAC=m2PC MAC=m1
PC
Dest. MAC addr = FF:FF:FF:FF:FF:FF(Broadcast)
Sour. MAC addr = PC MAC addr(m1)
EtherType=0x0800(IP)
Ver=4 Total LengthIHL=5 TOS
Identif ication Flags Fragment Offset
Source IP Address = 0.0.0.0
Destination IP Address = 255.255.255.255
Source Port = 68(boot pc) Destination Port = 67(bootps)
UDP Length UDP Checksum
OP code=1(req) HW Type=Ether HW Length=6 HOPS
Transact ion ID(xid)
Seconds Broadcast Flag(1b)
Client IP Address(ciaddr)=0.0.0.0
Your IP Address(yiaddr)=0.0.0.0
Server IP Address(siaddr)=0.0.0.0
Gateway IP Address(giaddr)=0.0.0.0
Client Hardware Address (16B)(chaddr)=PC MAC Address(m1)
Server Name(64B)(sname)
Filename(128B)
DHCP Message Type(Option 53)=1(DHCP Discover)
Client Ident ifier(Option 51)=PC MAC Address(m1)
Parameter Request List(Option 55)=Option 1,3,6,…..
TTL Protocol=17(UDP) Header Checksum
0B 2B 4B
Eth
ern
et
IPU
DP
DH
CP
Me
ssa
ge
Paylo
ad
ht tps:/ / socatelier.wordpress.com/
21
1 DHCP Discover
2 DHCP Offer
3 DHCP Request
4 DHCP Ack
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10, Client MAC=m1,
Subnet Mask(1)=255.255.255.0, Router(3)=1.1.1.1,
DNS(6) = 10.1.1.1&10.1.1.2,IP Lease Time(51)=3,600s,
DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1, Requested IP
Address(50)=1.1.1.10, DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10,Client MAC=m1,
Subnet Mask(1)=255.255.225.0,Router(3)=1.1.1.1,
DNS(6)=10.1.1.1&10.1.1.2, IP Lease Time(51)=3,600s,
DHCP Server Ident if ier(54)=1.1.1.254}
DHCP Server IP=1.1.1.254 DHCP Server MAC=m2PC MAC=m1
PC
Dest. MAC addr = FF:FF:FF:FF:FF:FF(Broadcast)
Sour. MAC addr =DHCP Server MAC addr(m2)
EtherType=0x0800(IP)
Ver=4 Total LengthIHL=5 TOS
Identif ication Flags Fragment Offset
Source IP Address = DHCP Server IP Address(1.1.1.254)
Destination IP Address = 255.255.255.255
Source Port = 67(bootps) Destination Port = 68(bootpc)
UDP Length UDP Checksum
OP code=1(req) HW Type=Ether HW Length=6 HOPS
Transact ion ID(xid)
Seconds Broadcast Flag(1b)
Client IP Address(ciaddr)=0.0.0.0
Your IP Address(yiaddr)=1.1.1.10
Server IP Address(siaddr)=0.0.0.0
Gateway IP Address(giaddr)=0.0.0.0
Client Hardware Address (16B)(chaddr)=PC MAC Address(m1)
Server Name(64B)(sname)
Filename(128B)
DHCP Message Type(Option 53)=2(DHCP Offer)
Subnet Mask(Option 1) = 255.255.255.0(/ 24)
Router IP(Option3)=1.1.1.1
TTL Protocol=17(UDP) Header Checksum
0B 2B 4B
Eth
ern
et
IPU
DP
DH
CP
Me
ssa
ge
Paylo
ad
Domain Name Server IP(Option 6) = 10.1.1.1, 10.1.1.2
IP Address Lease Time(Option 51) = 3,600 seconds(1 hour)
DHCP Server Identi fier(Option 54)=1.1.1.254 ht tps:/ / socatelier.wordpress.com/
22
1 DHCP Discover
2 DHCP Offer
3 DHCP Request
4 DHCP Ack
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10, Client MAC=m1,
Subnet Mask(1)=255.255.255.0, Router(3)=1.1.1.1,
DNS(6) = 10.1.1.1&10.1.1.2,IP Lease Time(51)=3,600s,
DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1, Requested IP
Address(50)=1.1.1.10, DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10,Client MAC=m1,
Subnet Mask(1)=255.255.225.0,Router(3)=1.1.1.1,
DNS(6)=10.1.1.1&10.1.1.2, IP Lease Time(51)=3,600s,
DHCP Server Ident if ier(54)=1.1.1.254}
DHCP Server IP=1.1.1.254 DHCP Server MAC=m2PC MAC=m1
PC
Dest. MAC addr = FF:FF:FF:FF:FF:FF(Broadcast)
Sour. MAC addr = PC MAC addr(m1)
EtherType=0x0800(IP)
Ver=4 Total LengthIHL=5 TOS
Identif ication Flags Fragment Offset
Source IP Address = 0.0.0.0
Destination IP Address = 255.255.255.255
Source Port = 68(boot pc) Destination Port = 67(bootps)
UDP Length UDP Checksum
OP code=1(req) HW Type=Ether HW Length=6 HOPS
Transact ion ID(xid)
Seconds Broadcast Flag(1b)
Client IP Address(ciaddr)=0.0.0.0
Your IP Address(yiaddr)=0.0.0.0
Server IP Address(siaddr)=0.0.0.0
Gateway IP Address(giaddr)=0.0.0.0
Client Hardware Address (16B)(chaddr)=PC MAC Address(m1)
Server Name(64B)(sname)
Filename(128B)
DHCP Message Type(Option 53)=3(DHCP Request)
Client Ident ifier(Option 51)=PC MAC Address(m1)
Requested IP Address(Option 50) = 1.1.1.10
TTL Protocol=17(UDP) Header Checksum
0B 2B 4B
Eth
ern
et
IPU
DP
DH
CP
Me
ssa
ge
Paylo
ad
DHCP Server Identi fier(Option 54) = 1.1.1.254
Parameter Request List(Option 55)=Option 1,3,6,….. ht tps:/ / socatelier.wordpress.com/
23
1 DHCP Discover
2 DHCP Offer
3 DHCP Request
4 DHCP Ack
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10, Client MAC=m1,
Subnet Mask(1)=255.255.255.0, Router(3)=1.1.1.1,
DNS(6) = 10.1.1.1&10.1.1.2,IP Lease Time(51)=3,600s,
DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m1},
IP Header {SIP = 0.0.0.0, DIP=255.255.255.255},
DHCP Payload {Client MAC=m1, Requested IP
Address(50)=1.1.1.10, DHCP Server Ident if ier(54)=1.1.1.254}
Ethernet Header {DA=FF:FF:FF:FF:FF:FF, SA=m2},
IP Header {SIP = 1.1.1.254, DIP=255.255.255.255},
DHCP Payload {Your IP=1.1.1.10,Client MAC=m1,
Subnet Mask(1)=255.255.225.0,Router(3)=1.1.1.1,
DNS(6)=10.1.1.1&10.1.1.2, IP Lease Time(51)=3,600s,
DHCP Server Ident if ier(54)=1.1.1.254}
DHCP Server IP=1.1.1.254 DHCP Server MAC=m2PC MAC=m1
PC
Dest. MAC addr = FF:FF:FF:FF:FF:FF(Broadcast)
Sour. MAC addr = DHCP Server MAC addr(m2)
EtherType=0x0800(IP)
Ver=4 Total LengthIHL=5 TOS
Identif ication Flags Fragment Offset
Source IP Address = DHCP Server IP Address(1.1.1.254)
Destination IP Address = 255.255.255.255
Source Port = 67(bootps) Destination Port = 68(bootpc)
UDP Length UDP Checksum
OP code=1(req) HW Type=Ether HW Length=6 HOPS
Transact ion ID(xid)
Seconds Broadcast Flag(1b)
Client IP Address(ciaddr)=0.0.0.0
Your IP Address(yiaddr)=1.1.1.10
Server IP Address(siaddr)=0.0.0.0
Gateway IP Address(giaddr)=0.0.0.0
Client Hardware Address (16B)(chaddr)=PC MAC Address(m1)
Server Name(64B)(sname)
Filename(128B)
TTL Protocol=17(UDP) Header Checksum
0B 2B 4B
Eth
ern
et
IPU
DP
DH
CP
Me
ssa
ge
Paylo
ad DHCP Message Type(Option 53)=4(DHCP Ack)
Subnet Mask(Option 1) = 255.255.255.0(/ 24)
Router IP(Option3)=1.1.1.1
Domain Name Server IP(Option 6) = 10.1.1.1, 10.1.1.2
IP Address Lease Time(Option 51) = 3,600 seconds(1 hour)
DHCP Server Identi fier(Option 54)=1.1.1.254
ht tps:/ / socatelier.wordpress.com/
Flow chat for DHCP ClientDHCP
Socket() with UDP
Do DHCP
Sendto():DHCP Discover
Recvfrom():DHCP_Offer
sendto():DHCP_Request
1
2
3
4
5
6
IP address / Subnet Mask / Gateway address 설정
DHCP는 UDP기반의 Protocol
DHCP Server 부터 IP주소를 할당받음
broadcasting(IP:255.255.255.255)를 DHCP Server들에게 전송
broadcasting(IP:255.255.255.225 + 네트워크 정보)를 DHCP Client들에게 전송
DHCP Server에게 네트워크 정보요청
recvfrom():DHCP_Ack
7 DHCP Client에게 네트워크정보를 전송(DHCP Server부터 IP 할당받음)24
Codes 상태 추가DHCP
Socket() with UDP
Do DHCP
Sendto():DHCP Discover
Recvfrom():DHCP_Offer
sendto():DHCP_Request
1
2
3
4
5
6
DHCP_init(SOCK_DHCP, gDATABUF); / dhcp_do();
socket(SOCK_HTTPc, Sn_MR_UDP, port, 0x00);
dhcp_do();
sendto(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT);
recvfrom(DHCP_SOCKET, (uint8_t *)pDHCPMSG, len, svr_addr, &svr_port);
DHCP Server에게 네트워크 정보요청
recvfrom():DHCP_Ack
7sendto(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT);
SOCK_INIT
S6_SR
SOCK_UDP
S6_IR
SEND_OK
RECV
SEND_OK
RECV25
실습
• DHCP Server와 연결하기• EX2_w5500evb_internet_dhcp_client
• DHCP Server로 3번 Request
실습 : EX2_w5500evb_internet_dhcp_client
26
DHCP 결과(Terminal Window)
DHCP 할당전
DHCP 할당후
27
1. Board와 PC를 USB cable을통해 연결한다.
2. Board의 ISP버튼을 누른 채Reset 버튼을 누른다.
3. Flash magic을 이용해 Hex파일을 다운로드 한다.
4. Reset버튼을 누른다.
DNS Client
• 목표
• DNS를 알자
• DNS Client를 알자
• DNS Query / DNS Respond 알자
28
DNS(Domain Name System)란?
• 호스트의 도메인이름을 호스트의 네트워크 주소로 바꾸거나 그반대의 변환을 수행.• 특화된 서버를 사용해 www.google.com과 같은 네임들을 숫자 주소
(59.18.44.167)로 해석(전환)해 데이터 및 정보를 해당 목적지로 보냄
29
www.google.comDomain
30
UserBrower
(PC)
Root DNS
com DNS
google.com DNS
1 www.google.com
8 222.122.195.6
2 DNS Query for www.google.com
3 DNS Response w/ IP address of
'Com DNS'
4 DNS Query for www.google.com
6 DNS Query for www.google.com
5 DNS Response w/ IP address of
'google.com DNS'
7 DNS Response w/ IP address of
www.google.com(59.18.44.167)
Local DNS
www.google.com
59.18.44.167
ht tps:/ / socatelier.wordpress.com/
DNS Header
• QR : query(0), response(1)
• Opcode : standard query(0), inverse query(1), server status(2)
• AA : authoritative answer(1)
• TC : truncated(1):if UDP then size exceeded 512 bytes
• RD : recursion desired(1)
• RA : recursion available(1)
• rcode : no error(0), name error(3)
Q
R
A
A
Total Authori ty Resource Records Total Addi tional Resource Records
0B 2B 4B
Identification Opcode(4) Rcode(4)
Total Questions Total Answers
T
C
R
D
R
A(Zero)
31
DNS 동작원리
1) DNS Query(단말 -> DNS 서버)
• 도메인(ex. www.google.com)을 DNS 서버로 데이터를 보낸다.
2) DNS Response(DNS 서버 -> 단말)
• 해당 DNS Server를 찾았을 때는 IP address가 포함된 데이터를 보낸다.
• 다른 DNS Server일 경우 자기가 관리하는 하위레벨의 네임서버들 가운데google.com도메인을 관리하는 네임서버의 정보(Name Server이름/IP주소)
를 담아보낸다.
32
Flow chat for DNS ClientDHCP or
FIX address
Socket() with UDP
DNS run
Sendto():DNS Query
Recvfrom(();DNS Request
1
2
3
4
5
IP address / Subnet Mask / Gateway address/ DND Server 설정
DNS는 UDP기반의 Protocol
DNS Server IP setting
DNS Server들에게 전송
DNS Server부터 네트워크 정보를 수신
33
Codes 상태 추가
DHCP or FIX address
Socket() with UDP
DNS run
Sendto():DNS Query
Recvfrom(();DNS Request
1
2
3
4
5
IP address / Subnet Mask / Gateway address/ DND Server 설정
socket(DNS_SOCKET, Sn_MR_UDP, 0, 0);
dns_do(SOCK_DNS, buf);
sendto(DNS_SOCKET, pDNSMSG, len, dns_ip, IPPORT_DOMAIN);
recvfrom(DNS_SOCKET, pDNSMSG, len, ip, &port);
S6_SR
SOCK_UDP
S7_SR
SOCK_INIT
34
SOCK_UDP
SOCK_INIT
DNS 실습
• DNS 동작
실습 : EX3_w5500evb_internet_dns_client(without DHCP)
EX4_w5500evb_internet_dhcp_dns_client
35
DHCP/DNS 결과
1. Board와 PC를 USB cable을 통해 연결한다.
2. Board의 ISP버튼을 누른채 Reset 버튼을 누른다.
3. Flash magic을 이용해 Hex파일을 다운로드한다.
4. Reset버튼을 누른다.
36
EX4_w5500evb_internet_dhcp_dns_client
Simple HTTP Client
• 목표• HTTP Client를 알자
• Domain / URI / Query String 알자
• 지금까지실습한 DHCP/DNS가 실제어떻게적용되는지알자
• Simple HTTP Client는구현에대해살펴보자
37
Web browser는 HTTP Client다 !?
• Hyper Text Transfer Protocol : NAVER 지식백과
HTTP serverwww.google.com 1. www.google.com 접속
HTTP ClientWeb browser
2. Request 보냄
3. HTML page Load and Display
4. image와 같은 추가적 정보 Request
5. Image page load and Display
* 4,5는 추가적 정보들이며 Web page의 Contents를 전부 받을 때까지 반복으로 수행38
http://www.google.com/search?q=wiznetDomain URI query string
- Domain : The physical server where website is hosted- URI : The ID which maps to files on server- Query String Part of a GET request to in values to customize the output
39
HTTP Request and Response
1. Browser RequestGET /search?q=wiznet HTTP/1.1
2. Web Server Finds File/var/www/…/search
3. Server Response/var/www/…/search
4. Browser Displays page
Read File &Processing Query
0. TCP connection- Domain:[port number] (www.google.com:80)
40
HTTP Request/Response header
41
Source: http://chimera.labs.oreilly.com/books/1230000000545/ch12.html#HTTP2_STREAMS_MESSAGES_FRAMES
Simple HTTP Client
HTTP serverwww.accuweather.com
HTTP ClientW5500-EVB
http://www.accuweather.com/en/kr/sourth-korea-weather
공유기
Tera Term: Web page display 42
Flow chat for Simple HTTP ClientDHCP or
FIX address
Socket() with TCP
Do DNS
connect():Domain_IP:80
send():
recv()
1
2
3
4
5
6
IP address / Subnet Mask / Gateway address / DNS server address 설정
HTTP는 TCP기반의 Protocol
Domain을 IP address로 변경
Domain_IP를 이용하여 port number가 80으로 TCP connect시도
TCP send를 이용하여 GET Request 전송 (web page요청)
TCP recv를 이용하여 web page 수신
43
Codes
DHCP
Socket() with TCP
Do DNS
connect():Domain_IP:80
send():
recv()
1
2
3
4
5
6
DHCP_init(SOCK_DHCP, gDATABUF); / dhcp_do();
socket(SOCK_HTTPc, Sn_MR_TCP, port, 0x00);
dns_do(SOCK_DNS, buf);
connect(SOCK_HTTPc, Domain_IP, PORT_HTTPS);
send(SOCK_HTTPc, http_cmd, http_cmd_sz-1);
recv(SOCK_HTTPc, buf, size);
44
S0_SR
SOCK_ESTABLISH
SOCK_INIT
S6_SR
SOCK_INIT/UDP
S7_SR
SOCK_INIT/UDP
HTTPc DHCPc DNS
실습준비 – Teraterm 설정(1)
45
Download: http://en.sourceforge.jp/projects/ttssh2/releases/
1. Board와 PC를 USB cable을 통해 연결한다.
2. Teraterm 실행: Serial체크, Board와 연결된 COM Port선택
실습 – Teraterm 설정(2)
46
3. Serial port 설정을 위해: menu bar>setup>Serial port…클릭
4. Bard rate를 Board설정과 같이 115200으로 선택한뒤 OK클릭
실습 – Simple HTTP Client
47
1. Board와 PC를 USB cable을 통해 연결한다.2. Board의 ISP버튼을 누른채 Power On시킨다.3. Flash magic을 이용해 Hex파일을 다운로드한다. 4. Reset키를 누른다. 5. Teraterm을 실행 및 설정한다.
DHCP
DNS
HTTP